Bloqueador de anuncios detectado: Nuestro sitio web se hace posible mediante la visualización de anuncios en línea a nuestros visitantes. Por favor, considera ayudarnos desactivando tu bloqueador de anuncios en nuestro sitio web.
Hola, hemos empezado a crear pequeños script shell y uno de ellos es este.
Necesito que me pregunte 3 números y ordenar estos números de mayor a menor.
#!/bin/bash
echo "Digame un numero"
read $numero1
echo "Digame otro numero"
read $numero2
echo "Digame el ultimo numero"
read $numero3
Y ahora no se como seguir por ahora solo hemos dado condicionales
if, then, else, y sus modificadores. Alguien me podría echar una mano, es que si tengo que ordenar todos mediante condicionales if me puede dar el lío, o es que yo no lo veo por donde meterle mano.
Saludos y muchas gracias de antemano.
Última edición por AlejandroPM el Mié Abr 15, 2009 3:50 pm, editado 1 vez en total.
Si sólo vas a ordenar 3 números tampoco es tanto. Además, no creo que haga falta un algoritmo profesional para tan poca cosa (buscar en google "algoritmos de ordenación").
Lo más simple que se me ocurre es que vayas colocando el número es la posición que le corresponda. Más concretamente, te llega el primer número, pues le colocas en primer lugar; te llega el segundo, pues si es mayor que el primero lo colocas después y sino antes; te llega el tercero, pues comparas con el primero, si es mayor comparas con el siguiente.... etc, hasta que el número que te llegue sea menor que el que compares o bien no tengas más con quien comparar, y lo colocas en esa posición.
Para ordenar únicamente 3 números no creo que haga falta poner un bucle, aunque debería hacerse con él.
Espero que hayas cogido la idea, que la explicación es más complicada que el código.
echo "Dime un numero"
read numero1
echo "Dime otro numero"
read numero2
echo "Dime el ultimo numero"
read numero3
if test $numero1 -gt $numero2
then
if $numero1 -gt $numero3
then
if $numero2 -gt $numero3
then
echo "$numero1 $numero2 $numero3"
else
echo "$numero1 $numero3 $numero2"
fi
else
echo "$numero3 $numero1 $sumero2"
fi
else
if test $numero1 -gt $numero3
then
if test $numero2 -gt $numero3
then
echo "$numero2 $numero3 $numero1"
else
echo "$numero3 $numero2 $numero1"
fi
else
if test $numero2 -gt $numero3
then
echo "$numero2 $numero3 $numero1"
fi
fi
fi
exit 0[/code]
He hecho esto pero no me funciona estará todo mal si alguien me puede echar una mano, se lo agradecería.
Última edición por AlejandroPM el Mié Abr 15, 2009 3:51 pm, editado 2 veces en total.
#!/bin/bash
echo "Dime un numero"
read numero1
echo "Dime otro numero"
read numero2
echo "Dime el ultimo numero"
read numero3
if [ $numero1 -gt $numero2 ]; then
if [ $numero2 -gt $numero3 ]; then
if [ $numero1 -gt $numero3 ]; then
echo "$numero1 $numero2 $numero3"
else
echo "$numero1 $numero3 $numero2"
fi
else
if [ $numero1 -gt $numero3 ]; then
echo "$numero1 $numero3 $numero2"
else
echo "$numero3 $numero1 $numero2"
fi
fi
else
if [ $numero2 -gt $numero3 ]; then
if [ $numero1 -gt $numero3 ]; then
echo "$numero2 $numero1 $numero3"
else
echo "$numero2 $numero3 $numero1"
fi
else
if [ $numero1 -gt $numero3 ]; then
echo "$numero1 $numero2 $numero3"
else
echo "$numero3 $numero2 $numero1"
fi
fi
fi
Última edición por Pratt el Mié Abr 15, 2009 8:15 am, editado 1 vez en total.
Mi Foro: http://www.hablarmierda.net
Mi Blog: http://www.michael-pratt.com/blog
Mis Distros: [url=http://www.slackware.com/changelog/current.php?cpu=i386]Slackware (Current)[/url]| [url=http://www.archlinux.org/]Archlinux[/url]
Gracias Pratt siempre acabas ayudándome, pero esta vez lo conseguí sacar solo anoche me tire unas 2 horillas, culpa mía que no dijera que lo he solucionado, a lo mejor has malgastado tiempo por mi culpa de todas formas muchas gracias.
Voy a poner como lo saque yo por si alguien tiene alguna vez también la duda o lo que sea.
#!/bin/bash
echo "Dime un numero"
read numero1
echo "Dime otro numero"
read numero2
echo "Dime el ultimo numero"
read numero3
if test $numero1 -gt $numero2
then
if test $numero1 -gt $numero3
then
if test $numero2 -gt $numero3
then
echo "$numero1 $numero2 $numero3"
else
echo "$numero1 $numero3 $numero2"
fi
else
echo "$numero3 $numero1 $numero2"
fi
else
if test $numero1 -gt $numero3
then
echo "$numero2 $numero1 $numero3"
else
if test $numero2 -gt $numero3
then
echo "$numero2 $numero3 $numero1"
else
echo "$numero3 $numero2 $numero1"
fi
fi
fi
exit 0
Todo eso está muy bien, pero si realmente quieres hacerlo simple puedes usar la orden sort (que ordena cadenas de texto en ficheros o entrada estándar de diversas formas).
#!/bin/bash
echo "Dime un numero"
read numero1
echo "Dime otro numero"
read numero2
echo "Dime el ultimo numero"
read numero3
# Ahora hacemos un 'echo' con cada uno de los números en una línea diferente y aplicamos el comando 'sort' con un pipe así:
echo -e "${numero1}\n${numero2}\n${numero3}" | sort -n # la '-n' es para que ordene números, aunque sin ella también lo hace.
Y ahí está, simple, sencillo y limpio, tan solo necesitas sort (en la mayoría de distros viene nada más instalar)
Espero que sirva, aunque ya se solucionase el asunto
Claro que con sort habria sido la salida mas rapida y facil. Pero asumo que el necesitaba hacerlo con condicionales.
Esos son ejercicios clasicos, que te ponen cuando estas empezando con un lenguaje de programacion
Mi Foro: http://www.hablarmierda.net
Mi Blog: http://www.michael-pratt.com/blog
Mis Distros: [url=http://www.slackware.com/changelog/current.php?cpu=i386]Slackware (Current)[/url]| [url=http://www.archlinux.org/]Archlinux[/url]
Exactamente Pratt estoy comenzando, fue el primer día . La verdad que me esta gustando bastante, si sigue la cosa asi lo mas seguro que me vaya al modulo de desarrollo de apliciones informaticas.