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


 


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  ordenar 3 numeros en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ordenar 3 numeros en C  (Leído 26,688 veces)
VirucKingX


Desconectado Desconectado

Mensajes: 540


VirucKingX


Ver Perfil
ordenar 3 numeros en C
« en: 28 Marzo 2008, 00:28 »

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


En línea



Bye
Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.332

he vuelto :)


Ver Perfil WWW
Re: ordenar 3 numeros en C
« Respuesta #1 en: 28 Marzo 2008, 00:47 »

investiga sobre el método de la burbuja, y es más fácil con un vector ;)

salu2


En línea

Ojo por ojo, y el mundo acabará ciego.
VirucKingX


Desconectado Desconectado

Mensajes: 540


VirucKingX


Ver Perfil
Re: ordenar 3 numeros en C
« Respuesta #2 en: 28 Marzo 2008, 00:55 »

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.
En línea



Bye
Flakito81


Desconectado Desconectado

Mensajes: 513



Ver Perfil
Re: ordenar 3 numeros en C
« Respuesta #3 en: 28 Marzo 2008, 02:16 »

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
« Última modificación: 28 Marzo 2008, 02:18 por Flakito81 » En línea

hjesush

Desconectado Desconectado

Mensajes: 117


Mi nick es sensual...


Ver Perfil WWW
Re: ordenar 3 numeros en C
« Respuesta #4 en: 28 Marzo 2008, 10:41 »

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. }
En línea

VirucKingX


Desconectado Desconectado

Mensajes: 540


VirucKingX


Ver Perfil
Re: ordenar 3 numeros en C
« Respuesta #5 en: 28 Marzo 2008, 14:42 »

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

Gracias justo lo havia echo igual xD,

Bye
En línea



Bye
bug_over

Desconectado Desconectado

Mensajes: 173


mv Linux GNU/linux


Ver Perfil WWW
Re: ordenar 3 numeros en C
« Respuesta #6 en: 10 Abril 2008, 15:03 »

Código:
#include <stdio.h>
#include <iostream.h>
//#include <conio2.h>
#define p 50

int todo[p];
int todo2[p];
int caja=0,acum=0,l=0,k=0,acum1=0;

int main() {
//clrscr();

    cout<<"Cuantos numeros desea ordenar: ";
    cin>>caja;

    if(caja > 0)

    {
      for(l=0; l < caja; l++)
        {
                printf("\nEl numero %d es : ", l+1);
                cin>>todo[l];
                todo2[l]=todo[l];
                }

        for(l=0; l < caja; l++)
        {
                for(k=0; k < caja; k++)
                {

                    if(todo[l] < todo[k])
                       {
                                 acum  = todo[k];
                                 todo[k] = todo[l];
                                 todo[l] = acum;
                       }
                        if(todo2[l] > todo2[k])
                       {
                                 acum1  = todo2[k];
                                 todo2[k] = todo2[l];
                                 todo2[l] = acum1;
                       }
                }
        }

    }
     else if (caja <= 0)

        cout<<"CUANTOS...? "<<caja<<endl;


        for(l=0; l < caja; l++)
          printf ("\n%d",todo[l]);
        for(l=0; l < caja; l++)
          printf ("\n\t\t%d",todo2[l]);

getchar();
getchar();
return (0);

}

Espero que te sirva es uno que hice cuando estudiaba, ordena un vector de n elementos y forma creciente y decreciente.

....Saludos
« Última modificación: 10 Abril 2008, 15:06 por Morphmitrio » En línea

bluesith

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: ordenar 3 numeros en C
« Respuesta #7 en: 11 Abril 2008, 20:10 »

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();
}
En línea

eKoutsh

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: ordenar 3 numeros en C
« Respuesta #8 en: 22 Septiembre 2012, 13:22 »

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);

}
En línea

diegoCmC

Desconectado Desconectado

Mensajes: 176



Ver Perfil
Re: ordenar 3 numeros en C
« Respuesta #9 en: 22 Septiembre 2012, 14:33 »

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.  
En línea

a todas las que me abrieron su coraza traeles suerte
ya no creo en el amor pero querria volver a verte
leosansan


Desconectado Desconectado

Mensajes: 1.229



Ver Perfil
Re: ordenar 3 numeros en C
« Respuesta #10 en: 23 Septiembre 2012, 18:01 »

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);
}
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.229



Ver Perfil
Re: ordenar 3 numeros en C
« Respuesta #11 en: 23 Septiembre 2012, 18:21 »

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]
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ordenar 3 numeros
Programación Visual Basic
kontaminator 8 4,102 Último mensaje 24 Junio 2006, 01:05
por ReViJa
ordenar numeros aleatorios
Programación C/C++
manuelita 3 11,904 Último mensaje 16 Febrero 2008, 16:47
por Flakito81
Ordenar alfabeticamente en php con numeros
PHP
dominioswww 10 3,477 Último mensaje 17 Junio 2008, 03:02
por WHK
ordenar tres numeros de teclado ascendentemente
Programación Visual Basic
minette1988 3 3,628 Último mensaje 25 Mayo 2010, 03:50
por Shell Root
Ordenar 5 números de menor a mayor e imprimir los números impares
Programación C/C++
ERIK546 6 4,627 Último mensaje 23 Junio 2012, 00:36
por ERIK546
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines