Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ktn_ivan en 4 Junio 2010, 17:56 pm



Título: duda en c
Publicado por: ktn_ivan en 4 Junio 2010, 17:56 pm
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.

Código
  1. #include<stdio.h>
  2. #include<conio.h>
  3. main()
  4. {
  5.      float peso[5];
  6.      int i;
  7.      float prom=0;
  8.      int masp=0;
  9.      int menp=0;
  10.  
  11.      for(i=0;i<5;++i)
  12.      {
  13.          printf("ingrese los pesos de las personas\n");
  14.          scanf("%f",&peso);
  15.          prom=prom+peso;
  16.  
  17.      }
  18.      prom=prom/i;
  19.      printf("el promedio de los pesos es %f\n",prom);
  20.      getch();
  21. }


Título: Re: duda en c
Publicado por: SeC en 4 Junio 2010, 18:16 pm
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.

Código
  1. #include<stdio.h>
  2.  
  3. #define MAX 5
  4.  
  5. int main(void)
  6. {
  7.      float peso[5];
  8.      int i;
  9.      float prom=0;
  10.      int mayor=-999;
  11.      int menor=999;
  12.  
  13.      for(i=0;i<MAX;i++)
  14.      {
  15.          printf("Peso de la persona Numero [%d]\n",i);
  16.          scanf("%f",&peso[i]);
  17.          prom=prom+peso[i];
  18.          if(peso[i]>mayor) mayor=peso[i];
  19.          if(peso[i])<menor) menor=peso[i];
  20.  
  21.      }
  22.      prom=prom/MAX;
  23.      printf("el promedio de los pesos es %f\n",prom);
  24.      return 0;
  25. }


Título: Re: duda en c
Publicado por: ktn_ivan en 4 Junio 2010, 18:46 pm
gracias
se me olvido decir k que estoy programando con el dev-c++


Título: Re: duda en c
Publicado por: [L]ord [R]NA en 4 Junio 2010, 18:56 pm
ktn_ivan usa GESHI cuando postees codigo, asi es mas facil de leerlo para quienes te daran ayuda.


Título: Re: duda en c
Publicado por: nicolas_cof en 5 Junio 2010, 22:17 pm
SeC por error pusiste a la variable mayor un valor muy pequeño

Código:
int mayor = -999;

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

Código:
#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.


Título: Re: duda en c
Publicado por: SeC en 6 Junio 2010, 03:25 am
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 .


Título: Re: duda en c
Publicado por: nicolas_cof en 6 Junio 2010, 04:26 am
Cita de: SeC
La 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.


Título: Re: duda en c
Publicado por: Akai en 6 Junio 2010, 10:54 am
Cita de: SeC
La 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.


Título: Re: duda en c
Publicado por: nicolas_cof en 6 Junio 2010, 16:50 pm
Cita de: Akai
En 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.


Título: Re: duda en c
Publicado por: Akai en 6 Junio 2010, 17:22 pm
Cierto, fallo mío que no revisé todos los posts


Título: Re: duda en c
Publicado por: [L]ord [R]NA en 6 Junio 2010, 18:01 pm
Primero que todo hay que tener algo en cuenta, el peso negativo no existe... por lo tanto puedes inicializar todos los valores a 0, asignar el primer peso al numero mayor y menor, mientras se van haciendo las comparaciones. Seria como el metodo de la burbuja pero sin recursividad.


Título: Re: duda en c
Publicado por: nicolas_cof en 6 Junio 2010, 18:07 pm
Cita de: Lord R.N.A.
Primero que todo hay que tener algo en cuenta, el peso negativo no existe... por lo tanto puedes inicializar todos los valores a 0, asignar el primer peso al numero mayor y menor, mientras se van haciendo las comparaciones. Seria como el metodo de la burbuja pero sin recursividad.

Mmmm pero en ese caso no tendria sentido inicializarlas a 0, ya que despues le terminas asignando un valor cuando ingresas el primer peso.

Salu10.