elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda en programa: Mayor, menor y media de n números. [solucionado]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda en programa: Mayor, menor y media de n números. [solucionado]  (Leído 16,268 veces)
Manimecker

Desconectado Desconectado

Mensajes: 47



Ver Perfil
Duda en programa: Mayor, menor y media de n números. [solucionado]
« en: 21 Octubre 2011, 02:58 am »

Les cuento, empezé a ver un curso de C/C++ en mi colegio y estoy teniendo problemas con un programa que me dejaron. La función del programa es que debe encontrar el mayor y el menor números de N números que el usuario introduzca, además de sacar la media de todos los números.

Empezé con este código:
Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    int N1=1, May, Men, d=1, Cont=0;
  6.    while (N1 != 0)
  7.    {
  8.        printf("Inserta un numero: ");
  9.        scanf("%d", &N1);
  10.        if (d==1)
  11.        {
  12.            May=N1;
  13.            Men=1;
  14.        }
  15.        else
  16.        {
  17.            if (N1==0)
  18.                break;
  19.            else
  20.            {
  21.                if (N1 > May)
  22.                {
  23.                    May=N1;
  24.                }
  25.                if (N1 < Men)
  26.                {
  27.                    Men=N1;
  28.                }
  29.            }
  30.                d++;
  31.                Cont=Cont+N1;
  32.        }
  33.  
  34.    }
  35.    printf("El numero mayor es %d y el menor es %d. \n La media es: %d.", May, Men, (Cont/d));
  36. }
  37.  

Sin embargo, me doy cuenta que sólo compara 2 valores y los demás no. Después de buscar un rato en la web, encontre una técnica para encontrar los números mayores y menores, y es inicializar los 2 valores de mayor y menor con un valor mínimo y uno más grande, respectivamente. Me explico, este es el programa con esa técnica, y funciona.

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    int N1=1, May=0, Men=9999999, d=1, Cont=0;
  6.    while (N1 != 0)
  7.    {
  8.        printf("Inserta un numero: ");
  9.        scanf("%d", &N1);
  10.        if (N1==0)
  11.            break;
  12.        else
  13.        {
  14.            if (N1 > May)
  15.            {
  16.                May=N1;
  17.            }
  18.            if (N1 < Men)
  19.            {
  20.                Men=N1;
  21.            }
  22.            d++;        
  23.            Cont=Cont+N1;
  24.        }
  25.    }
  26.    printf("El numero mayor es %d y el menor es %d. \n La media es: %d.", May, Men, (Cont/d));
  27. }

El problema es que no entiendo por qué el primero no funciona y el segundo sí, espero que alguien me pueda orientar.

Gracias de antemano.


« Última modificación: 21 Octubre 2011, 06:26 am por Manimecker » En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Duda en programa: Mayor, menor y media de n números.
« Respuesta #1 en: 21 Octubre 2011, 04:17 am »

¡Buenas!

En el primer programa tienes un pequeño error de logica, al asignar el primer valor haces bien asignando al maximo ese primer valor, pero a minimo le das como valor 1, por lo tanto, si cualquier otro numero es mayor que uno tendras un falso valor minimo de 1, por lo tanto, tendras que hacer maximo = minimo = primer_valor_introducido.

El segundo codigo es algo horroroso sin pies ni cabeza, ya que si todos los numeros introducidos son negativos tendras a cero como falso maximo y si todos los valores son mayores que el que has estimado tu como minimo tendras un falso minimo, por lo tanto ese codigo es completamente incorrecto ya que no soluciona todos los casos que te podras encontrar.

¡Saludos!


En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Manimecker

Desconectado Desconectado

Mensajes: 47



Ver Perfil
Re: Duda en programa: Mayor, menor y media de n números.
« Respuesta #2 en: 21 Octubre 2011, 05:22 am »

¡Buenas!

En el primer programa tienes un pequeño error de logica, al asignar el primer valor haces bien asignando al maximo ese primer valor, pero a minimo le das como valor 1, por lo tanto, si cualquier otro numero es mayor que uno tendras un falso valor minimo de 1, por lo tanto, tendras que hacer maximo = minimo = primer_valor_introducido.

El segundo codigo es algo horroroso sin pies ni cabeza, ya que si todos los numeros introducidos son negativos tendras a cero como falso maximo y si todos los valores son mayores que el que has estimado tu como minimo tendras un falso minimo, por lo tanto ese codigo es completamente incorrecto ya que no soluciona todos los casos que te podras encontrar.

¡Saludos!

Muchísimas gracias por tus comentarios, por lo que veo, el segundo código queda omitido.

Ahora, perdona mi ignorancia, pero no sé cómo quedaría el código arreglando el problema lógico que comentas, especialmente la siguiente parte:
Código:
maximo = minimo = primer_valor_introducido
Sinceramente no entiendo cómo implementarlo al código.

Perdona mi ignorancia, pero apenas estoy aprendiendo y se me dificulta un poco.

Muchísimas gracias de antemano.
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Duda en programa: Mayor, menor y media de n números.
« Respuesta #3 en: 21 Octubre 2011, 05:35 am »

XD
Código
  1.        if (d==1)
  2.        {
  3.            May=Men=N1;
  4.        }
  5.  

Asi te aseguras que tento May com Men son valores que has introducido.

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Manimecker

Desconectado Desconectado

Mensajes: 47



Ver Perfil
Re: Duda en programa: Mayor, menor y media de n números.
« Respuesta #4 en: 21 Octubre 2011, 06:16 am »

XD
Código:
        if (d==1)
        {
            May=Men=N1;
        }

Asi te aseguras que tento May com Men son valores que has introducido.

¡Saludos!

Muchas gracias, ya lo había implementado de ese modo, pero no me resultó, por eso decidí consultarte nuevamente.

Desgraciadamente, tengo otro error, el siguiente es el output en la consola:
Código
  1. Inserta un numero: 50
  2. Inserta un numero: 30
  3. Inserta un numero: 5
  4. Inserta un numero: 500
  5. Inserta un numero: 0
  6. El numero mayor es 0 y el menor es 0.
  7. La media es 0.

No puedo ver cuál es el error, y he probado con diferentes maneras.

Te agradezco toda tu ayuda de antemano.

EDIT
------
Después de omitir esta parte:
Código
  1.            if (N1==0)
  2.                break;
  3.  

Me ejecuta y muestra valores, pero también me toma el valor de 0 como uno válido y no como el signo de salida. Lo raro es que anteriormente se ejecutaba correctamente.

EDIT 2
-----------

Lo he solucionado, el problema era la posición del break, el cual iba al principio.

Todo solucionado, el programa se ejecuta correctamente.

Muchas gracias por tu ayuda do-while :D.
« Última modificación: 21 Octubre 2011, 06:24 am por Manimecker » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines