Autor
|
Tema: ordenar 3 numeros en C (Leído 23,456 veces)
|
VirucKingX
Desconectado
Mensajes: 540
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.329
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: 540
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: 508
|
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 por Flakito81 »
|
En línea
|
|
|
|
hjesush
Desconectado
Mensajes: 116
Mi nick es sensual...
|
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: 540
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
|
|
|
bug_over
Desconectado
Mensajes: 173
mv Linux GNU/linux
|
#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
Mensajes: 11
|
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: 172
|
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
|
|
|
leosansan
Conectado
Mensajes: 553
|
Lo que no puedo sacar es el valor del medio  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: #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
Conectado
Mensajes: 553
|
Lo que no puedo sacar es el valor del medio  haber si me dan una mano Y con la idea de eKoutsh y cambiando los if por el condicional: #include <stdio.h> void main (void) { float a,b,c,d,menor,medio,mayor; printf ("Ingre los valores :"); scanf ("%f %f %f",&a ,&b ,&c ); d = (a>c) ? a : c; mayor= (d>b) ? d : b; d = (a<c) ? a : c; menor = (d<b) ? d : b; medio=a+b+c-menor-mayor; printf ("El orden de menor a mayor : %g %g %g\n",menor ,medio ,mayor ); return 0; }[code]
[/code]
|
|
|
|
|
En línea
|
|
|
|
|
| Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ordenar 3 numeros
Programación Visual Basic
|
kontaminator
|
8
|
3,653
|
24 Junio 2006, 01:05
por ReViJa
|
|
|
ordenar numeros aleatorios
Programación C/C++
|
manuelita
|
3
|
10,688
|
16 Febrero 2008, 16:47
por Flakito81
|
|
|
Ordenar alfabeticamente en php con numeros
PHP
|
dominioswww
|
10
|
3,000
|
17 Junio 2008, 03:02
por WHK
|
|
|
ordenar tres numeros de teclado ascendentemente
Programación Visual Basic
|
minette1988
|
3
|
3,016
|
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
|
2,453
|
23 Junio 2012, 00:36
por ERIK546
|
|