Pages

martes, 1 de enero de 2013

Ordenar creciente o decreciente una lista de N números – Diagrama de flujo

Problema
Hacer un programa o algoritmo.
Se desea realizar un algoritmo que realice las siguientes tareas:
  • Leer una lista de números enteros
  • Visualizar dichos números
  • El algoritmo deberá pedir si yo deseo ordenar en sentido decreciente o creciente (burbuja)
Solución
  • Entrada: 10, 15, 20, 8
  • Salida: decreciente 20 15 10 8
Se inicializa la variable “n” en cero, se solicita al usuario ingrese la cantidad de números que desea ingresar, la cual se captura en la variable “T”, luego se llama a la subrutina CapturaNumero, donde el usuario ingresa los números, se llama a la subrutina MostrarNumeros donde se muestran los números ingresados, luego se solicita al usuario de qué forma desea se muestre el arreglo ascendentemente (1) o descendentemente (2),
Se comprueba si se decidió por la opción 1 (op=1)
Si es Verdadero (Si)
Se decidió por la opción ascendente, Se llama a la subrutina OrdenarAsc, donde se ordena los números ingresados de forma ascendente, se llama a la subrutina MostrarNumeros para visualizar en orden ascendente.
Si es Falso (No)
    Se decidió por la opción descendente, Se llama a la subrutina OrdenarDesc, donde se ordena los números ingresados de forma descendente, se llama a la subrutina MostrarNumeros para visualizar en orden descendente.
Fin.

Diagrama de flujo - Ordena creciente o decreciente una lista de numeros

En la Subrutina CapturaNumero, se crea un ciclo For, en cada iteración se captura los números en la variable M y la cual se asigna al arreglo Lista, finaliza el ciclo.


Diagrama de flujo - Subrutina CapturaNumero

 En la subrutina OrdenarAsc, se crea un ciclo While el cual finaliza si la variable “n” es igual a la longitud del arreglo menos 1, en cada iteración se inicializa la variable “n” en cero, se crea un ciclo For, en cada iteración se comprueba si el primer elemento del arreglo Lista es menor al segundo elemento  (Lista(k)<Lista(k+1))
Si es Verdadero (Si)
Nos indica que esta ordenado ascendentemente, se actualiza la variable “n” agregándole 1.
Si es Falso (No)
Se realiza un intercambio entre los elementos del arreglo Lista.
Finalizan los ciclos.


Diagrama de flujo - Subrutina OrdenarAsc 

 En la Subrutina OrdenaDesc, se crea un ciclo While el cual finaliza si la variable “n” es igual a la longitud del arreglo menos 1, en cada iteración se inicializa la variable “n” en cero, se crea un ciclo For, en cada iteración se comprueba si el primer elemento del arreglo Lista es mayor al segundo elemento  (Lista(k)>Lista(k+1))
Si es Verdadero (Si)
Nos indica que esta ordenado descendentemente, se actualiza la variable “n” agregándole 1.
Si es Falso (No)
Se realiza un intercambio entre los elementos del arreglo Lista.
Finalizan los ciclos.


Diagrama de flujo - Subrutina OrdenaDesc

 En la Subrutina MostrarNumeros, se crea un ciclo For, en cada iteración se muestra los elementos del arreglo Lista, finaliza ciclo.

Diagrama de flujo -  Subrutina MostrarNumeros

 Diagrama Fuente en FreeDFD 
 Código fuente en Java
 Código fuente en C++
 Código fuente en C
 Código fuente en C#
 Código fuente en Python
 Código fuente en Visual Basic

5 comentarios:

Anónimo dijo...

no sirve ni para hacerse una paja...

Anónimo dijo...

jajajaja como que no, es perfecto, es justo lo que necesitaba para ordenar los números al azar que generaba el programa XD, muchas gracias

Anónimo dijo...

muy bueno

Anónimo dijo...

Es un muy buen algoritmo... gracias por subir esta resolución, ayudas a una comunidad de emprendedores :)

tona (: dijo...

hola, alguien puede decirme cual me sirve de guia para hacerlo en fortran90?

Publicar un comentario en la entrada