Hola compañeros, trate de hacer un programa que ordene los numeros de mayor a menor pero al correr salen muchos ceros y parece que tiene algun fallo, pero no se cual es, podrian ayudarme? en seguida coloco el codigo
#include <stdio.h>
main(){
int a, b, c, d, e, nm1, nm2, nm3, nm4, nm5;
printf("Por favor introduzca 5 numeros separados por un espacio, en seguida se ordenaran de mayor a menor.\n");
scanf("f%, f%, f%, f%, f%", a, b, c, d, e);
if (a >= b){
nm1 = a;
nm2 = b;
}
else {
nm1 = b;
nm2 = a;
}
if (c >= d){
nm3 = c;
nm4 = d;
}
else {
nm3 = d;
nm4 = c;
}
if (nm3 >= nm1){
nm1 = c;
nm3 = a;
}
else {
nm1 = a;
nm3 = c;
}
if (nm4 >= nm2){
nm2 = d;
nm4 = b;
}
else {
nm2 = b;
nm4 = d;
}
if (e >= nm1 & nm3){
nm2 = nm1;
nm3 = nm2;
nm4 = nm3;
nm5 = nm4;
c = nm1;
}
else {
e = nm5;
}
printf("Gracias! aqui estan tus numeros ordenados:\n %f, %f, %f, %f, %f", nm1, nm2, nm3, nm4, nm5);
return 0;
}
Mod: Tema modificado. Para hacer tu código más visible usa las etiqueta GeSHi
problema 1: en el scanf el parámetro "f%" está mal escrito... es con el "%" antecediendo al indicador tal que "%f"
problema 2: todas tus variables son de tipo int, "%f" captura floats... debes usar "%d"
problema 3: para el ultimo printf también debes usar "%d"
problema 4: los parametros para scanf deben pasar referenciados es decir con "&" antes de cada variable
ej:
scanf("%d", &variable);
por ultimo, no entiendo la lógica de tu programa... pero está mal...
modifiqué tu código para hacerlo más visible, procura usar etiquetas GeSHi
muchas gracias, por la ayuda con el codigo y por la informacion, es la primera vez que posteo y que hago un programa... la proxima tratare de postearlo correctamente :xD
regresando al codigo... lo cambie con tus recomendaciones pero me sigue saliendo algo asi... (http://s17.postimg.org/hjy94kenz/programa_mayor_a_menor.jpg)
supongo que algo esta mal en mi codigo, no logro entender que es, podria alguien orientarme para que funcione correctamente?
publica como quedó tu codigo
asi quedo ya modificado...
#include <stdio.h>
main(){
int a, b, c, d, e, nm1, nm2, nm3, nm4, nm5;
printf("Por favor introduzca 5 numeros separados por un espacio, en seguida se ordenaran de mayor a menor.\n");
scanf("%d, %d, %d, %d, %d", &a, &b, &c, &d, &e);
if (a >= b){
nm1 = a;
nm2 = b;
}
else {
nm1 = b;
nm2 = a;
}
if (c >= d){
nm3 = c;
nm4 = d;
}
else {
nm3 = d;
nm4 = c;
}
if (nm3 >= nm1){
nm1 = c;
nm3 = a;
}
else {
nm1 = a;
nm3 = c;
}
if (nm4 >= nm2){
nm2 = d;
nm4 = b;
}
else {
nm2 = b;
nm4 = d;
}
if (e >= nm1 & nm3){
nm2 = nm1;
nm3 = nm2;
nm4 = nm3;
nm5 = nm4;
c = nm1;
}
else {
e = nm5;
}
printf("Gracias! aqui estan tus numeros ordenados:\n %d, %d, %d, %d, %d", nm1, nm2, nm3, nm4, nm5);
return 0;
}
el error está en linea 5...
scanf("%d, %d, %d, %d, %d", &a, &b, &c, &d, &e);
el espera que introduzcas un numero, coloques una coma, un espacio y repitas... cuidado con esos errores que son los más comunes jejeje
perfecto! ahora eso esta bien, pero creo que la logica de mi codigo esta mal, como dijiste,
(http://s28.postimg.org/j9lzxjwzh/programa_mayor_a_menor.jpg)
si le pogo comentarios al codigo de que traate de hacer con cada if, crees que podrias orientarme?
tienes alguna limitación? no puedes usar ciclos?
lo más practico es que hicieras un ordenamiento de burbuja
lo que pasa es que me pidieron solo utilizar los if...
muchos if anidados jejeje
realmente te toca hacer un ordenamiento a mano jejeje te recomiendo que busques metodos de ordenamientos de array y apliques esa logica jejeje
bueno voy a revisar la logica y ese metodo, si no lo logro, regresare a preguntar jojo
buble sort es el más simple, pero serían 14 pasos (creo)
la logica es algo como
supongamos el peor caso
a=5, b=4, c=3, d=2, e=1
si a mayor que b cambian a y b
si b mayor que c cambian b y c
si c mayor que d cambian c y d
si d mayor que e cambian d y e
aquí tienes el ultimo numero listo...
ahora hacemos lo mismo hasta d, luego de nuevo hasta c, y por ultimo hasta b...