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

 

 


Tema destacado: Introducción a Git (Primera Parte)


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


Desconectado Desconectado

Mensajes: 541


VirucKingX


Ver Perfil
ordenar 3 numeros en C
« 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


En línea



Bye
Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.336

he vuelto :)


Ver Perfil WWW
Re: ordenar 3 numeros en C
« Respuesta #1 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


En línea

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


Desconectado Desconectado

Mensajes: 541


VirucKingX


Ver Perfil
Re: ordenar 3 numeros en C
« Respuesta #2 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.
En línea



Bye
Flakito81


Desconectado Desconectado

Mensajes: 519



Ver Perfil
Re: ordenar 3 numeros en C
« Respuesta #3 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
« Última modificación: 28 Marzo 2008, 02:18 am por Flakito81 » En línea

Hesp

Desconectado Desconectado

Mensajes: 119



Ver Perfil WWW
Re: ordenar 3 numeros en C
« Respuesta #4 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. }
En línea

VirucKingX


Desconectado Desconectado

Mensajes: 541


VirucKingX


Ver Perfil
Re: ordenar 3 numeros en C
« Respuesta #5 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

Gracias justo lo havia echo igual xD,

Bye
En línea



Bye
any

Desconectado Desconectado

Mensajes: 173


for(;;) developing


Ver Perfil WWW
Any
« Respuesta #6 en: 10 Abril 2008, 15:03 pm »

 >:(
« Última modificación: 29 Marzo 2017, 20:40 pm por any » En línea

bluesith

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: ordenar 3 numeros en C
« Respuesta #7 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();
}
En línea

eKoutsh

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: ordenar 3 numeros en C
« Respuesta #8 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);

}
En línea

diegoCmC

Desconectado Desconectado

Mensajes: 177



Ver Perfil
Re: ordenar 3 numeros en C
« Respuesta #9 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.  
En línea

a todas las que me abrieron su coraza traeles suerte
ya no creo en el amor pero querria volver a verte
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

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