duda en c

Iniciado por ktn_ivan, 4 Junio 2010, 17:56 PM

0 Miembros y 1 Visitante están viendo este tema.

ktn_ivan

hola
tengo un  pequeño problema o mejor una duda

me pidieron hacer una programa
que almacene a 5 personas con su peso
y sacara el promedio y cual era el de mayor peso
y el de menor peso

pero solamente pude sacar el promedio del arreglo
pero no pude comparlos para ver cual era mas pesado y el menos pesado

si alguien me puede aclarar esa duda porfavor

no es un trabajo xsicaso

quiero salir de esa duda para que a futuro no me vuelva a pasar

gracias

EI: juntando mensajes.

#include<stdio.h>
#include<conio.h>
main()
{
      float peso[5];
      int i;
      float prom=0;
      int masp=0;
      int menp=0;
     
      for(i=0;i<5;++i)
      {
          printf("ingrese los pesos de las personas\n");
          scanf("%f",&peso);
          prom=prom+peso;
         
      }
      prom=prom/i;
      printf("el promedio de los pesos es %f\n",prom);
      getch();
}

SeC

#1
Una idea es declarar dos variables, una muy grande y otra muy pequeña (con respecto al problema), luego al pedir los pesos y meterlos en el array vas comparando cada peso con estas variables y si una es mayor o menor, reemplazas y ya .. modifique un poco el código de quien contesto antes para que revises la lógica.

#include<stdio.h>

#define MAX 5

int main(void)
{
     float peso[5];
     int i;
     float prom=0;
     int mayor=-999;
     int menor=999;
   
     for(i=0;i<MAX;i++)
     {
         printf("Peso de la persona Numero [%d]\n",i);
         scanf("%f",&peso[i]);
         prom=prom+peso[i];
         if(peso[i]>mayor) mayor=peso[i];
         if(peso[i])<menor) menor=peso[i];
       
     }
     prom=prom/MAX;
     printf("el promedio de los pesos es %f\n",prom);
     return 0;
}
Educad a los niños y no sera necesario castigar a los hombres - Pitagoras.

ktn_ivan

gracias
se me olvido decir k que estoy programando con el dev-c++

[L]ord [R]NA

ktn_ivan usa GESHI cuando postees codigo, asi es mas facil de leerlo para quienes te daran ayuda.

nicolas_cof

#4
SeC por error pusiste a la variable mayor un valor muy pequeño

int mayor = -999;

ktn_ivan, te dejo el codigo de como yo lo haria...

#include <stdio.h>

#define MAX 5

int main( void )
{
   float peso[MAX], prom = 0, mayor, menor;
   int i;

   for ( i = 0; i < MAX; i++ )
   {
       printf( "Peso de la persona numero [%d]: ", i + 1 );
       fflush( stdout );
       scanf( "%f", &peso[i] );
       prom += peso[i];
       if ( i == 0 ) mayor = menor = peso[i];
       if ( peso[i] > mayor ) mayor = peso[i];
       if ( peso[i] < menor ) menor = peso[i];
   }
   
   prom /= MAX;
   printf( "El promedio de los pesos es: %.2f\n"
           "El mayor de los pesos es: %.2f\n"
           "El menor de los pesos es: %.2f\n", prom, mayor, menor );
   
   return 0;
}


Salu10.

SeC

#5
Cita de: nicolas_cof en  5 Junio 2010, 22:17 PM
SeC por error pusiste a la variable mayor un valor muy pequeño

No fue un error así debe ser, la idea es que cuando lea el primer dato y lo compare con la variable mayor este sea mayor y se reemplaze en la variable mayor, de ahí en adelante se compara con el nuevo valor y así  =) .

Edito:

La variable menor si estaba mal xd, tenia un valor muy pequeño cuando debía ser uno muy grande .
Educad a los niños y no sera necesario castigar a los hombres - Pitagoras.

nicolas_cof

Cita de: SeCLa variable menor si estaba mal xd, tenia un valor muy pequeño cuando debía ser uno muy grande.

;D me equivoque yo al avisarte! Pense el menor y puse la mayor :P

Salu10.

Akai

Cita de: nicolas_cof en  6 Junio 2010, 04:26 AM
Cita de: SeCLa variable menor si estaba mal xd, tenia un valor muy pequeño cuando debía ser uno muy grande.

;D me equivoque yo al avisarte! Pense el menor y puse la mayor :P

Salu10.

En esos casos, sin saber qué rango de valores vas a recibir, conviene inicializar las variables mayor y menor al primer dato que recibas.

nicolas_cof

Cita de: AkaiEn esos casos, sin saber qué rango de valores vas a recibir, conviene inicializar las variables mayor y menor al primer dato que recibas.

Si te fijas en el codigo que deje mas arriba, es exactamente lo que hago :P

Salu10.

Akai

Cierto, fallo mío que no revisé todos los posts