Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: VirucKingX en 28 Marzo 2008, 00:28 am



Título: ordenar 3 numeros en C
Publicado por: VirucKingX en 28 Marzo 2008, 00:28 am
Esta es mi duda, como ordenar 3 numeros de menor a mayor en C

Esto es lo que tengo :

Citar

#include <stdio.h>

int main ()
{

float x1,x2,x3,menor,mayor;

printf ("Ingre los valores :");
scanf ("%f %f %f",&x1,&x2,&x3);

menor = x1;

mayor = x3;


if ( x2 < menor )
menor = x2;
if ( x3 < menor )
menor = x3;

if ( x1 > mayor )
mayor = x1;
if ( x2 > mayor )
mayor = x2;

printf ("El orden de menor a mayor : %f %f\n",menor,mayor);

return (0);

}



Lo que no puedo sacar es el valor del medio  ;D haber si me dan una mano

Bye


Título: Re: ordenar 3 numeros en C
Publicado por: Nakp en 28 Marzo 2008, 00:47 am
investiga sobre el método de la burbuja, y es más fácil con un vector ;)

salu2


Título: Re: ordenar 3 numeros en C
Publicado por: VirucKingX en 28 Marzo 2008, 00:55 am
investiga sobre el método de la burbuja, y es más fácil con un vector ;)

salu2

conozco el metodo de la burbuja, pero como recien me estan pasando el if, else if ya que estoy en primer año. No quiero hacer un codigo demasiado complicado y por eso trato de hacerlo lo mas simple posible con if.


Título: Re: ordenar 3 numeros en C
Publicado por: Flakito81 en 28 Marzo 2008, 02:16 am
Lo mas sencillo es usar un metodo de ordenacion, el de la burbuja que ya te han comentado es bastante sencillo. Si quieres hacerlo con variables y el programa estructurado tal cual lo tienes tan solo has de declarar una variable medio y despues de los calculos (antes del printf) poner este codigo
Código
  1. if ((mayor == x1 && menor == x2) ||
  2.    (menor == x1 && mayor == x2))    medio = x3;
  3. if ((mayor == x2 && menor == x3) ||
  4.    (menor == x2 && mayor == x3))    medio = x1;
  5. if ((mayor == x1 && menor == x3) ||
  6.    (menor == x1 && mayor == x3))    medio = x2;
  7.  
Como puedes ver el codigo se puede complicar cuantos mas numeros quieras ordenar.

Saludos!

PD: En stdlib existe una funcion para ordenar (metodo QuickSort) qsort mira como funciona por si te interesa http://www.conclase.net/c/librerias/funcion.php?fun=qsort (http://www.conclase.net/c/librerias/funcion.php?fun=qsort)


Título: Re: ordenar 3 numeros en C
Publicado por: Hesp en 28 Marzo 2008, 10:41 am
Código
  1. double maximo( double x, double y, double z )
  2. {
  3.   double max = x;   // asume que x es el mayor
  4.  
  5.   if ( y > max )    // si y es mayor,
  6.      max = y;       // asigna y a max
  7.  
  8.   if ( z > max )    // si z es mayor,
  9.      max = z;       // asigna z a max
  10.  
  11.   return max;       // max es el mayor
  12. }


Título: Re: ordenar 3 numeros en C
Publicado por: VirucKingX en 28 Marzo 2008, 14:42 pm
Lo mas sencillo es usar un metodo de ordenacion, el de la burbuja que ya te han comentado es bastante sencillo. Si quieres hacerlo con variables y el programa estructurado tal cual lo tienes tan solo has de declarar una variable medio y despues de los calculos (antes del printf) poner este codigo
Código
  1. if ((mayor == x1 && menor == x2) ||
  2.    (menor == x1 && mayor == x2))    medio = x3;
  3. if ((mayor == x2 && menor == x3) ||
  4.    (menor == x2 && mayor == x3))    medio = x1;
  5. if ((mayor == x1 && menor == x3) ||
  6.    (menor == x1 && mayor == x3))    medio = x2;
  7.  
Como puedes ver el codigo se puede complicar cuantos mas numeros quieras ordenar.

Saludos!

PD: En stdlib existe una funcion para ordenar (metodo QuickSort) qsort mira como funciona por si te interesa http://www.conclase.net/c/librerias/funcion.php?fun=qsort (http://www.conclase.net/c/librerias/funcion.php?fun=qsort)

Gracias justo lo havia echo igual xD,

Bye


Título: Any
Publicado por: any en 10 Abril 2008, 15:03 pm
 >:(


Título: Re: ordenar 3 numeros en C
Publicado por: bluesith en 11 Abril 2008, 20:10 pm
En el caso de que tu profesor no te haya pedido con arreglos mi solucion seria esta:

#include<stdio.h>
#include<conio.h>
#include<iostream.h>

void main()
{
 int a,b,c,x,y,o,p,q;   /* declaracion variables */

 clrscr();                  /*************************/
 cout<<"\na : ";        /*                                       */
 cin>>a;                  /*                                        */
 cout<<"\nb : ";       /*   Ingreso de valores          */
 cin>>b;                  /*                                        */
 cout<<"\nc : ";        /*                                       */
 cin>>c;                  /*************************/
 getch();
 o=a; p=b;q=c;          /* "Backup" de valores ingresados para impresion final */
 if(c<b)
   {
    x=c;
    y=b;                /* comparacion entre el 3er y 2do valor */
    b=x;
    c=y;
   }
 if(b<a)
   {
    x=b;
    y=a;                /* comparacion entre el 2do y 1er valor */
    a=x;
    b=y;
   }
 if(c<b)
   {
    x=c;
    y=b;                /* comparacion entre el 3er y 2do valor */
    b=x;
    c=y;
   }
 getch();
 cout<<"Los numeros son: "<<o<<" "<<p<<" "<<q<<"\n";  /* Impresion valores originales */
 cout<<"Y ordenados son: "<<a<<" "<<b<<" "<<c<<"\n";  /* Impresion valores ordenados */
 getch();
}


Título: Re: ordenar 3 numeros en C
Publicado por: eKoutsh en 22 Septiembre 2012, 13:22 pm
Añadiendo una variable "medio", a la cual se le dará la suma de los 3 números(x1 + x2 + x3), pero también se le restará el "mayor" y el "menor", así simplemente quedará el "medio".
Espero que se entienda y que te sirva aunque sea un poco.

#include <stdio.h>

int main ()
{

    float x1,x2,x3,menor,mayor;
    float medio;

    printf ("Ingre los valores :");
    scanf ("%f %f %f",&x1,&x2,&x3);

    menor = x1;

    mayor = x3;


    if ( x2 < menor )
        menor = x2;
    if ( x3 < menor )
        menor = x3;

    if ( x1 > mayor )
        mayor = x1;
    if ( x2 > mayor )
        mayor = x2;
    // Añadiendo esta sentencia, ya que se conoce el mayor y el menor, simplificamos (con sus opuestos)
    // y nos queda... el medio
    medio = x1 + x2 + x3 - mayor - menor;

    printf ("El orden de menor a mayor : %f %f %f\n",menor,medio,mayor);

    return (0);

}


Título: Re: ordenar 3 numeros en C
Publicado por: diegoCmC en 22 Septiembre 2012, 14:33 pm
Aqui tienes el codigo de la forma que lo quieres ordenar tu.
Pero es mas facil usando un array que nombres genericos, aunque igual aun no aprendiste a usar los array
Un saludo

Código
  1. #include <stdio.h>
  2.  
  3. int main ()
  4. {
  5.  
  6. float x1,x2,x3,menor,mayor,intermedio;
  7.  
  8. printf ("Ingre los valores :");
  9. scanf ("%f %f %f",&x1,&x2,&x3);
  10.  
  11. menor = x1;
  12.  
  13.  
  14. if ( x2 < menor ){
  15.    menor=x2;
  16.    if(x3 < menor){
  17.        mayor=x1;
  18.        menor=x3;
  19.        intermedio=x2;
  20.    }
  21.    else{
  22.        if(x3<x1){
  23.            intermedio=x3;
  24.            mayor=x1;
  25.        }
  26.        else{
  27.            intermedio=x1;
  28.            mayor=x3;
  29.        }
  30.    }
  31. }
  32. else{
  33.    if(x3 < menor){
  34.        menor=x3;
  35.        intermedio=x1;
  36.        mayor=x2;
  37.    }
  38.    else{
  39.        if(x2<x3){
  40.            intermedio=x2;
  41.            mayor=x3;
  42.        }
  43.        else{
  44.            intermedio=x3;
  45.            mayor=x2;
  46.        }
  47.    }
  48. }
  49.  
  50. printf ("El orden de menor a mayor : %f %f %f\n",menor,intermedio,mayor);
  51.  
  52.  
  53. return (0);
  54.  
  55. }
  56.  


Título: Re: ordenar 3 numeros en C
Publicado por: leosansan en 23 Septiembre 2012, 18:01 pm
Lo que no puedo sacar es el valor del medio  ;D haber si me dan una mano
Si así lo quieres, así lo tendrás. No es lo más "elegante" pero es lo que quieres:
Código:
#include <stdio.h>

int main ()
{

    float x1,x2,x3,menor,medio,mayor;
    printf ("Ingre los valores :");
    scanf ("%f %f %f",&x1,&x2,&x3);
    menor = x1;
    mayor = x3;
    if ( x2 < menor )
    menor = x2;
    if ( x3 < menor )
    menor = x3;
    if ( x1 > mayor )
    mayor = x1;
    if ( x2 > mayor )
    mayor = x2;
    if (x1!=mayor && x1!=menor)
        medio=x1;
    else if (x2!=mayor && x2!=menor)
        medio=x2;
    else if (x3!=mayor && x3!=menor)
        medio=x3;
    printf ("El orden de menor a mayor :%g  %g  %g\n",menor,medio,mayor);
    return (0);
}


Título: Re: ordenar 3 numeros en C
Publicado por: leosansan en 23 Septiembre 2012, 18:21 pm
Lo que no puedo sacar es el valor del medio  ;D haber si me dan una mano
Y con la idea de eKoutsh y cambiando los if por el condicional:
Código
  1. #include <stdio.h>
  2. void main (void)
  3. {
  4.    float a,b,c,d,menor,medio,mayor;
  5.    printf ("Ingre los valores :");
  6.    scanf ("%f %f %f",&a,&b,&c);
  7.    d = (a>c) ? a : c;
  8.    mayor= (d>b) ? d : b;
  9.    d = (a<c) ? a : c;
  10.    menor = (d<b) ? d : b;
  11.    medio=a+b+c-menor-mayor;
  12.    printf ("El orden de menor a mayor : %g  %g  %g\n",menor,medio,mayor);
  13.    return 0;
  14. }[code]
[/code]