Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: shikidos en 19 Enero 2015, 03:54 AM

Título: ayuda compañeros! programa c ordenar mayor a menor
Publicado por: shikidos en 19 Enero 2015, 03:54 AM
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
Título: Re: ayuda compañeros! programa c ordenar mayor a menor
Publicado por: engel lex en 19 Enero 2015, 04:05 AM
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

Título: Re: ayuda compañeros! programa c ordenar mayor a menor
Publicado por: shikidos en 19 Enero 2015, 04:21 AM
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?
Título: Re: ayuda compañeros! programa c ordenar mayor a menor
Publicado por: engel lex en 19 Enero 2015, 04:26 AM
publica como quedó tu codigo
Título: Re: ayuda compañeros! programa c ordenar mayor a menor
Publicado por: shikidos en 19 Enero 2015, 04:32 AM
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;
}
Título: Re: ayuda compañeros! programa c ordenar mayor a menor
Publicado por: engel lex en 19 Enero 2015, 04:35 AM
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
Título: Re: ayuda compañeros! programa c ordenar mayor a menor
Publicado por: shikidos en 19 Enero 2015, 04:52 AM
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?
Título: Re: ayuda compañeros! programa c ordenar mayor a menor
Publicado por: engel lex en 19 Enero 2015, 04:58 AM
tienes alguna limitación? no puedes usar ciclos?

lo más practico es que hicieras un ordenamiento de burbuja
Título: Re: ayuda compañeros! programa c ordenar mayor a menor
Publicado por: shikidos en 19 Enero 2015, 05:05 AM
lo que pasa es que me pidieron solo utilizar los if...
Título: Re: ayuda compañeros! programa c ordenar mayor a menor
Publicado por: engel lex en 19 Enero 2015, 05:23 AM
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

Título: Re: ayuda compañeros! programa c ordenar mayor a menor
Publicado por: shikidos en 19 Enero 2015, 05:27 AM
bueno voy a revisar la logica y ese metodo, si no lo logro, regresare a preguntar jojo
Título: Re: ayuda compañeros! programa c ordenar mayor a menor
Publicado por: engel lex en 19 Enero 2015, 05:41 AM
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...