Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Promedio con estructuras

Estas en el tema de Promedio con estructuras en el foro de C/C++ en Foros del Web. Hola que tal! bueno les pido ayuda por que la verdad no se como seguir, lo que tengo que hacer es lo siguiente: Tengo una ...
  #1 (permalink)  
Antiguo 04/04/2012, 15:57
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 11 meses
Puntos: 3
Promedio con estructuras

Hola que tal! bueno les pido ayuda por que la verdad no se como seguir, lo que tengo que hacer es lo siguiente: Tengo una estrucutra que almacena la marca de un celular , color y precio .. lo que me intera a mi es como hago para hacer que informe el precio promedio de los celulares cargados POR MARCA (un precio promedio por cada marca).

Tengo la siguiente función

void promedio(struct telefono c[], int valor){

int i, j, res=0, prom=0, con=1;
struct telefono aux;
char auxe;

//Ordeno
for(i=0;i<valor;i++){
for(j=i+1;j<valor;j++){
if(strcmp(c[i].marc, c[j].marc) > 0){
aux = c[i];
c[i] = c[j];
c[j] = aux;
}
}
}

for(i=0;i<valor;i++){
if(strcmp(c[i].marc , c[i].marc) == 0){
con++;
res = res + c[i].precio;
prom = res / con;
if(prom != 0){
printf("La marca es: %s y su promedio: %i \n", c[i].marc, prom);
}
}
else
{
con=0;
res=0;
prom=0;
}
}
}


Ordeno primero y despues pregunto si son iguales las cadenas y hago el promedio por marca. Pero no se como preguntarlo.

Muchas gracias por su ayuda.
  #2 (permalink)  
Antiguo 04/04/2012, 18:01
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Promedio con estructuras

En el siguiente for estas comparando la misma cadena. Lo que debes hacer es tener una array aparte... con la siguiente informacion

Marca
Precio
cantidad

La idea que el array tenga un elemento por marca existente....entonces por cada elemento de tu array de datos te fijas que marcas es y la buscas en el nuevo array. Ahi sumas el precio y aumentas en uno a la cantidad.

Al terminar de recorrer todos tus datos lo que haces es por cada marca en el array auxiliar haces la division precio / cantidad y imprimes el promedio...

Si no me entendiste muy bien, avisame que te ayudo con un poco de codigo.

Saludos,
  #3 (permalink)  
Antiguo 04/04/2012, 20:11
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 3 meses
Puntos: 94
Respuesta: Promedio con estructuras

Hola! te dejo un codigo sin modificar mucho lo que tenes:
Código C:
Ver original
  1. for(i=0;i<valor;i++) {
  2.   if(((i+1)<valor) && (strcmp(c[i].marc , c[i+1].marc) == 0)){// i+1< valor para que no compare fuera del arreglo
  3.     con++;
  4.     res = res + c[i].precio;
  5.     prom = res / con;
  6.   }
  7.   else
  8.  {
  9.     con++;
  10.     res = res + c[i].precio;
  11.    prom = res / con;
  12.    printf("La marca es: %s y su promedio: %i \n", c[i].marc, prom);
  13.    
  14.    con=0;
  15.    res=0;
  16.    prom=0;
  17.   }
  18. }/* fin del for */

La solucion no es la mas eficiente, de echo no me gusta, pero es lo primero q se me ocurrio

Saludos
  #4 (permalink)  
Antiguo 07/04/2012, 16:15
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 11 meses
Puntos: 3
Respuesta: Promedio con estructuras

Primero les quiero agredecer por molestarse en responder.. tarde un poquito en responder debido a en bs.as un lio con el tema de la luz y bueno recien hoy volvio.

Sam90: Entendí masomenos... si me podrías pasar algo de código te lo agradeceria muchisimo.

cesar_casla: Funciona pero en algunos , no todos, voy a seguir investigando y cualquier cosa te comento

Muchas gracias a ambos.
  #5 (permalink)  
Antiguo 07/04/2012, 17:12
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 11 meses
Puntos: 3
Respuesta: Promedio con estructuras

cesar_casla : Ese código que me pasaste funciona bien.. pero el primero tiene el problema (la primera posición del vector) , siempre me da la mitar.. las demas siempre lo hace bien..
  #6 (permalink)  
Antiguo 07/04/2012, 17:58
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 11 meses
Puntos: 3
Respuesta: Promedio con estructuras

Muchachos lo pude arreglar , no se por que en el código la primera posicion me tomaba uno de mas en el conteo y me dividia mal.. lo sulucione así:


Cita:
void promedio(struct telefono c[], int valor){

int i, j, res=0, prom=0, con=1, man=0;
struct telefono aux;
char *auxe;

//Ordeno
for(i=0;i<valor;i++){
for(j=i+1;j<valor;j++){
if(strcmp(c[i].marc, c[j].marc) > 0){
aux = c[i];
c[i] = c[j];
c[j] = aux;
}
}
}

for(i=0;i<valor;i++) {
if(((i+1)<valor) && (strcmp(c[i].marc , c[i+1].marc) == 0)){
man++;
con++;
res = res + c[i].precio;
prom = res / con;
if(man == 1){
con--;
}

}
else
{
con++;
res = res + c[i].precio;
prom = res / con;
printf("La marca es: %s y su promedio: %i \n", c[i].marc, prom);
con=0;
res=0;
prom=0;
}

}

}

Muchas gracias a ambos son unos genios!!.

Etiquetas: estructuras, int, promedio, struct
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:41.