Script para ordenar 3 numeros [SOLUCIONADO]

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: maiku, akodo

Responder
Avatar de Usuario
AlejandroPM
Forista Nuevo
Forista Nuevo
Mensajes: 28
Registrado: Mié Mar 11, 2009 8:00 am

Script para ordenar 3 numeros [SOLUCIONADO]

Mensaje por AlejandroPM »

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.

Avatar de Usuario
akodo
Moderador
Moderador
Mensajes: 1457
Registrado: Mié Nov 28, 2007 8:00 am
Ubicación: En la X del explorer (pulse para llamar)

Re: Script para ordenar numeros

Mensaje por akodo »

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

Avatar de Usuario
AlejandroPM
Forista Nuevo
Forista Nuevo
Mensajes: 28
Registrado: Mié Mar 11, 2009 8:00 am

Re: Script para ordenar numeros

Mensaje por AlejandroPM »

[code]#!/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 $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.

Avatar de Usuario
Pratt
Forista Medio
Forista Medio
Mensajes: 353
Registrado: Jue May 05, 2005 7:00 am
Ubicación: Bogotá
Contactar:

Re: Script para ordenar numeros

Mensaje por Pratt »

Mas o menos asi:

Código: Seleccionar todo

#!/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]

Avatar de Usuario
AlejandroPM
Forista Nuevo
Forista Nuevo
Mensajes: 28
Registrado: Mié Mar 11, 2009 8:00 am

Re: Script para ordenar numeros

Mensaje por AlejandroPM »

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.

Código: Seleccionar todo

#!/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

jotahacker
Forista Nuevo
Forista Nuevo
Mensajes: 7
Registrado: Sab Nov 08, 2008 8:00 am
Contactar:

Re: Script para ordenar 3 numeros [SOLUCIONADO]

Mensaje por jotahacker »

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

Yo lo hice así:

Código: Seleccionar todo

#!/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 :P

Un saludo!
[url=http://nhopkg.sourceforge.net/]Nhopkg[/url]

Avatar de Usuario
Pratt
Forista Medio
Forista Medio
Mensajes: 353
Registrado: Jue May 05, 2005 7:00 am
Ubicación: Bogotá
Contactar:

Mensaje por Pratt »

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]

Avatar de Usuario
AlejandroPM
Forista Nuevo
Forista Nuevo
Mensajes: 28
Registrado: Mié Mar 11, 2009 8:00 am

Re: Script para ordenar 3 numeros [SOLUCIONADO]

Mensaje por AlejandroPM »

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.

Mucha gracias por vuestra ayuda.

Galher20
Forista Nuevo
Forista Nuevo
Mensajes: 1
Registrado: Mié Nov 25, 2020 12:19 am

Re: Script para ordenar numeros

Mensaje por Galher20 »

Hola que tal a todos, alguien podría decirme como puedo hacer un programa que ordene de mayor a menor una "n" cantidad de números por favor!

Avatar de Usuario
maiku
Moderador
Moderador
Mensajes: 1540
Registrado: Jue Abr 19, 2007 7:00 am
Ubicación: Cojutepeque, El Salvador C. A.

Re: Script para ordenar numeros

Mensaje por maiku »

Galher20 escribió:
Mié Nov 25, 2020 12:25 am
Hola que tal a todos, alguien podría decirme como puedo hacer un programa que ordene de mayor a menor una "n" cantidad de números por favor!
Puedes utilizar el método de la burbuja, es el ejemplo clásico.
Grüße...
Maiku

Full linux alchemist!!!

Responder
  • Temas similares
    Respuestas
    Vistas
    Último mensaje