Autor
|
Tema: ordenar 3 numeros en C (Leído 58,556 veces)
|
VirucKingX
Desconectado
Mensajes: 541
VirucKingX
|
Esta es mi duda, como ordenar 3 numeros de menor a mayor en C Esto es lo que tengo : #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  haber si me dan una mano Bye
|
|
|
En línea
|
 Bye
|
|
|
Nakp
casi es
Ex-Staff
Desconectado
Mensajes: 6.336
he vuelto :)
|
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
Mensajes: 541
VirucKingX
|
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
Mensajes: 519
|
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 if ((mayor == x1 && menor == x2) || (menor == x1 && mayor == x2)) medio = x3; if ((mayor == x2 && menor == x3) || (menor == x2 && mayor == x3)) medio = x1; if ((mayor == x1 && menor == x3) || (menor == x1 && mayor == x3)) medio = x2;
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
|
double maximo( double x, double y, double z ) { double max = x; // asume que x es el mayor if ( y > max ) // si y es mayor, max = y; // asigna y a max if ( z > max ) // si z es mayor, max = z; // asigna z a max return max; // max es el mayor }
|
|
|
En línea
|
|
|
|
VirucKingX
Desconectado
Mensajes: 541
VirucKingX
|
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 if ((mayor == x1 && menor == x2) || (menor == x1 && mayor == x2)) medio = x3; if ((mayor == x2 && menor == x3) || (menor == x2 && mayor == x3)) medio = x1; if ((mayor == x1 && menor == x3) || (menor == x1 && mayor == x3)) medio = x2;
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=qsortGracias justo lo havia echo igual xD, Bye
|
|
|
En línea
|
 Bye
|
|
|
any
Desconectado
Mensajes: 173
for(;;) developing
|
 |
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
Mensajes: 5
|
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
Mensajes: 1
|
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
Mensajes: 177
|
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 #include <stdio.h> int main () { float x1,x2,x3,menor,mayor,intermedio; printf ("Ingre los valores :"); scanf ("%f %f %f",&x1 ,&x2 ,&x3 ); menor = x1; if ( x2 < menor ){ menor=x2; if(x3 < menor){ mayor=x1; menor=x3; intermedio=x2; } else{ if(x3<x1){ intermedio=x3; mayor=x1; } else{ intermedio=x1; mayor=x3; } } } else{ if(x3 < menor){ menor=x3; intermedio=x1; mayor=x2; } else{ if(x2<x3){ intermedio=x2; mayor=x3; } else{ intermedio=x3; mayor=x2; } } } printf ("El orden de menor a mayor : %f %f %f\n",menor ,intermedio ,mayor ); return (0); }
|
|
|
En línea
|
a todas las que me abrieron su coraza traeles suerte ya no creo en el amor pero querria volver a verte
|
|
|
|
|