Resultados 1 al 9 de 9

Problema en C

  1. #1 Problema en C 
    Iniciado
    Fecha de ingreso
    Sep 2008
    Mensajes
    21
    Descargas
    0
    Uploads
    0
    Estoy aprendiendo C, y hice un programa en el que insertas 3 numeros y te dice el maximo, el minimo y el mediano, pero al poner por ejemplo: 3, 2 y 1 me da que el maximo es 1, el mediano 3 y el minimo 2... Que problema puedo tener?
    Aqui dejo el codigo:
    Código:
    void main()
    {
         int a, b, c, max, min, med;
         printf("Pon 3 valores \n");
         scanf( "%d %d %d", &a, &b, &c );
         if ((a>b) && (a>c))
         {
                   max=a;
                   if (b>c)
                   {
                           med=b;
                           min=c;
                           }
                   else
                   {
                       med=c;
                       min=b;
                       }
         }
         else if ((b>a) && (b>c))
         {
              max=b;
              if (a>c)
              {
                      med=a;
                      min=c;
                      }
              else
              {
                  med=c;
                  min=a;
                  }
         }
         else if ((c>a) && (c>b));
         {
              max=c;
              if (a>b)
              {
                      med=a;
                      min=b;
                      }
              else
              {
                  med=b;
                  min=a;
                  }
         }
         printf("son: \n");
         printf("maximo= %d\n", max);
         printf("mediano= %d\n", med);
         printf("minimo= %d\n", min);
         system("pause");
         }
    Gracias por vuestra ayuda ^^
    Citar  
     

  2. #2  
    Avanzado
    Fecha de ingreso
    Jan 2010
    Mensajes
    813
    Descargas
    1
    Uploads
    0
    Lo bueno que tiene C es que lo puedes hacer todo lo mal que quieras, que como lo optimiza el compilador... ¿por qué no hacemos un concurso de burradas? A ver quién es capaz de hacer un algoritmo más desoptimizado para calcular el menor, mediano y mayor, el único requisito es que funcione.

    Código:
    void main()
    {
         int a, b, c, max, min, med;
         printf("Pon 3 valores \n");
         scanf( "%d %d %d", &a, &b, &c );
    
         if (a > b && a > c)
    	max = a;
         if (b > a && b > c)
    	max = b;
         if (c > b && c > a)
    	max = c;
    
         if (a < b && a < c)
    	min = a;
         if (b < a && b < c)
    	min = b;
         if (c < b && c < a)
    	min = c;
    
         if (a > min && a < max)
    	med = a;
         if (b > min && b < max)
    	med = b;
         if (c > min && c < max)
    	med = c;
    
         printf("son: \n");
         printf("maximo= %d\n", max);
         printf("mediano= %d\n", med);
         printf("minimo= %d\n", min);
         }
    Citar  
     

  3. #3  
    Iniciado
    Fecha de ingreso
    Sep 2008
    Mensajes
    21
    Descargas
    0
    Uploads
    0
    Bueno, al simpatico de arriba:
    Antes de tanta prepotencia deberias saber que lo que hago es probar las distintas construcciones que sé para practicar, y la que me falla es esa asi que lo que me has puesto tu no es inutil, es lo siguiente.
    Citar  
     

  4. #4  
    Avanzado
    Fecha de ingreso
    Jan 2010
    Mensajes
    813
    Descargas
    1
    Uploads
    0
    Podría soltar una ristra de insultos aleatorios aquí, pero como me parece que has malinterpretado completamente mi mensaje, mejor me callo.
    Citar  
     

  5. #5  
    Moderador HH
    Fecha de ingreso
    Nov 2006
    Mensajes
    1.516
    Descargas
    7
    Uploads
    0
    Herc, no hagas mucho caso de Fruit, es como la mascota del foro

    Veras, para lo que tu quieres hacer lo ideal seria que aprendieses a utilizar el llamado "Bubble Sort" u "Ordenamiento Burbuja"

    Veras, consiste en lo siguiente:
    Creando un Array haces que un bucle lo recorra comparando las cifras que le hayas dado a cada posicion. Y luego guardas la que resulte mayor en cada caso en una variable "comodin" la que sea mayor la colocas en la 1º posicion del Array (pero no habras perdido la 1º, 2º y 3º cifras originales porque las habras ido guardando en la variable "comodin), y asi sucesivamente.

    O mejor explicado: http://es.wikipedia.org/wiki/Ordenamiento_de_burbuja


    Un saludo

    PD: Fruit, se bueno.
    Mess with the best, die like the rest.


    Hazle a los demas... antes de que te hagan a ti.
    Citar  
     

  6. #6  
    Iniciado
    Fecha de ingreso
    Sep 2008
    Mensajes
    21
    Descargas
    0
    Uploads
    0
    El caso es que yo todavia estoy aprendiendo y estaba probando las diferentes construcciones condicionales, pero no se porque cuando hice esa los resultados me dieron mal y queria ver si alguien veia el fallo que habia tenido en ese codigo :/
    Citar  
     

  7. #7  
    Medio
    Fecha de ingreso
    Jan 2006
    Mensajes
    98
    Descargas
    0
    Uploads
    0
    Saludos herc. Tu error está en esta comparación:

    else if ((c>a) && (c>b));

    Has puesto un punto y coma donde no deberías y por ello haces que esa condición valga solo para ese punto y coma. Dicho de otra forma, el resto de código que debería estar en esa condición se ejecutará siempre.
    Prvo nauci milslit, poslije programiraj.
    Citar  
     

  8. #8  
    Moderador HH
    Fecha de ingreso
    Sep 2003
    Mensajes
    1.384
    Descargas
    21
    Uploads
    5
    Añadiendo a lo dicho por Polimeron, herc tené en cuenta que en C se puede encerrar cualquier porción de código entre llaves {}. Es decir, no son específicas de las estructuras de control como ser el if, switch o while por ejemplo.

    Es así que no te da ningún error al encontrar el bloque de código después del ';'.

    Saludos
    - Me desagrada
    - ¿Por qué?
    - No estoy a su altura.
    ¿Ha respondido así alguna vez un hombre?

    Friedrich Nietzsche



    Citar  
     

  9. #9  
    Iniciado
    Fecha de ingreso
    Sep 2008
    Mensajes
    21
    Descargas
    0
    Uploads
    0
    Muchas gracias por la ayuda ^^
    Citar  
     

Marcadores

Marcadores