indicar cual es el numero mas grande y pequeño

Iniciado por mort, 4 Enero 2015, 04:07 AM

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

mort

como podran darse cuenta soy principiante en esto de la programación en c, y  estoy haciendo uno de los ejercicios del libro de deitel que dice que introduzca 3 números diferentes desde el teclado, y saque la suma, el producto, el promedio, el numero mas pequeño y el mas grande, especificando que solo utilice la forma simple de instrucción if que se supone he aprendido hasta ahora, pero no me sale el resultado bien en lo de indicar cual es el numero mayor y menor, ya intente de varias formas y he buscado por Internet ejercicios parecidos para ver cual es mi problema, pero son distintos y no le entiendo, ademas la mayoría usan "for" en esto, y yo no lo puedo usar porque en el libro todavía no veo esa función, tengo que usar if para sacarlo pero no me sale:

#include <stdio.h>

int main ()
{
   int num1, num2, num3, suma, promedio, producto;
   
   printf("introduzca tres enteros diferentes: ");
   scanf("%d%d%d", &num1, &num2, &num3);
   
   suma = num1 + num2 + num3;
   promedio = (num1 + num2 + num3) / 3;
   producto = num1 * num2 * num3;
   
   printf("la suma es: %d\nel promedio es: %d\nel producto es: %d\n", suma, promedio, producto);
   
   /*identficar el numero mayor y menor*/
   if (num1 > num2 < num3){
      printf("el numero mas pequeño es: %d\n", num2);
   }
   
   if (num2 > num3 < num1){
      printf("el numero mas pequeño es: %d\n", num3);
   }
   
   if (num3 > num1 < num2){
      printf("el numero mas pequeño es: %d\n", num1);
   }
   
   if (num1 < num2 > num3){
      printf("el numero mas grande es: %d\n", num2);
   }
   
   if (num2 < num1 > num3){
      printf("el numero mas grande es: %d\n", num1);
   }
   
   if (num1 < num3 > num2){
      printf("el numero mas grande es: %d\n", num3);
   }
   
   return 0;
}
si ejecuto esto y pongo por ejemplo los números: 1, 2, 3 me sale esto:
la suma es: 6
el promedio es: 2
el producto es: 6
el numero mas peque±o es: 2
el numero mas peque±o es: 3
el numero mas peque±o es: 1

¿en que estoy mal :\?


cesariox23

Hola amigo, digamos que también soy principiante y casualmente también estoy estudiando el excelente libro de Deitel (Cómo programar en C y C++, Cuarta edición), el problema al que haces referencia es sencillo, mas bien si me permites darte un consejo te diría que en todo problema que quieras resolver primero debes redactar su respectivo algoritmo, una vez que el algoritmo está comprobado ahí recién lo codificas a lenguaje C (sería ideal que te consigas un libro de Algorítmica para que conozcas todo lo relacionado a los algoritmos).

Como te dije antes, el problema que nos concierne es bastante sencillo, consiste básicamente en hacer las comparaciones después de capturar cada número, acá te pongo el código.


#include <stdio.h>

int main(void)
{
    int num01, num02, num03;
    int menor, mayor;

    printf("Ingrese primer n%cmero: ", 163);
    scanf("%d", &num01);

    /* Inicializamos los valores de mayor y menor con el primer numero */
    mayor = num01;
    menor = num01;

    printf("Ingrese segundo n%cmero: ", 163);
    scanf("%d", &num02);

    /* Ahora que mayor y menor ya tienen un valor definido pues podemos empezar a comparar */
    if(num02 > mayor)
        mayor = num02;

    if(num02 < menor)
        menor = num02;

    printf("Ingrese tercer n%cmero: ", 163);
    scanf("%d", &num03);

    if(num03 > mayor)
        mayor = num03;

    if(num03 < menor)
        menor = num03;

    /* Ahora que tenemos al mayor y menor de los numeros pues es tiempo de mostrar los resultados de las operaciones */
    printf("La suma es %d\n", num01 + num02 + num03);
   
    /* Si quieres que el promedio te salga con decimales coloca esto, como lo pusiste antes te saldra la division entera, sin decimales */
    printf("El promedio es %.2f\n", (num01 + num02 + num03) / 3.0);
    printf("El producto es %d\n", num01 * num02 * num03);

    /* Mostrando al mayor y al menor de los numeros */
    printf("El mayor es %d\n", mayor);
    printf("El menor es %d\n", menor);

    return 0;
}


Permíteme explicarte algunos detalles para que quede todo claro.
Siempre que quieras imprimir acentos u otras letras como la ñ en C debes colocar el modificador de caracter (%c) y como segundo parámetro del printf debes colocar el número de posición en la tabla ASCII que ocupa la letra que quieres mostrar, la tabla de códigos ASCII es una tabla que va del 0 al 255 donde están representadas la mayoría de las letras. Si quisieras imprimir la palabra "árbol" deberías usar esto:

printf("%crbol", 160);

Con esto le dice al C que en donde está el indicador %c debe colocar la letra que ocupa el lugar 160 en la tabla ASCII, me refiero a la letra "á".

Quizás ya lo hayas visto pero para representar números decimales (float) se utiliza el modificador %f, el %.2f quiere decir que el número debe mostrarse con 2 cifras decimales después del punto, si solo colocas el %f el número decimal se mostrará con 6 decimales (predeterminado).

Ante cualquier problema no dudes en consultarme.

mort

muchas gracias por responder, la verdad si me sirvio.

Yoel Alejandro

Hola mort. La mayoría de los libros usa la estrcutura for, tratándose de una cantidad general de "n" números. Pero si sólo son tres, puede calcularse de forma más "primitiva" con if.

Por supuesto, eso no sería práctico para más de tres números, pero al fin y al cabo el propósito de este ejercicio es netamente pedagógico, la idea es que practiques para ganar destreza.
Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)