ayuda compañeros! programa c ordenar mayor a menor

Iniciado por shikidos, 19 Enero 2015, 03:54 AM

0 Miembros y 1 Visitante están viendo este tema.

shikidos

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

engel lex

#1
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

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

shikidos

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...

supongo que algo esta mal en mi codigo, no logro entender que es, podria alguien orientarme para que funcione correctamente?

engel lex

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

shikidos

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

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

shikidos

perfecto! ahora eso esta bien, pero creo que la logica de mi codigo esta mal, como dijiste,

si le pogo comentarios al codigo de que traate de hacer con cada if, crees que podrias orientarme?

engel lex

tienes alguna limitación? no puedes usar ciclos?

lo más practico es que hicieras un ordenamiento de burbuja
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

shikidos

lo que pasa es que me pidieron solo utilizar los if...

engel lex

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

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.