Hola a todos, hoy os voy a explicar como podemos ordenar arreglo con Pseint.
En Pseint, cuando tratamos con arreglos, en ciertas ocasiones, necesitaremos ordenarlo de una manera concreta para nuestro algoritmo.
Si no sabes lo que son los arreglos, te dejo un tutorial donde explicamos que son:
Vamos a hacer un ejemplo paso a paso, para comprender como ordenar un arreglo.
Rellenar un arreglo
Lo primero, es tener nuestro arreglo relleno de datos que ordenar.
Para eso ya tenemos un tutorial sobre como hacerlo:
De forma resumida, tenemos que crear un arreglo de x posiciones y recorremos con un bucle de 0 a x-1 creando un numero aleatorio con la función azar.
Proceso OrdenarArreglo // Definicion de variables definir arreglo, numeroElementos, i como numero; // inicializacion de variables dimension arreglo[10]; numeroElementos <- 10; // Crear arreglo con valores aleatorios Escribir "Original: "; Para i<-0 Hasta numeroElementos - 1 Con Paso 1 Hacer arreglo[i] <- azar(100); Escribir arreglo[i], " " Sin Saltar; FinPara Escribir ""; FinProceso
Elegir el modo de ordenamiento para ordenar arreglo
También, añadiremos que el usuario pueda elegir el modo de ordenamiento del arreglo.
Definiremos una variable llamada ordenamiento donde almacenaremos el modo de ordenamiento.
Después, pediremos al usuario que elija dos opciones (ASC/DESC):
- ASC (Ascendente): ordenaremos los números de menor a mayor.
- DESC (Descendente): ordenaremos los números de mayor a menor.
Ten en cuenta, que debemos controlar si el usuario escribe uno u otro.
Proceso OrdenarArreglo // Definicion de variables definir arreglo, numeroElementos, i como numero; definir ordenamiento como cadena; // inicializacion de variables dimension arreglo[10]; numeroElementos <- 10; // Crear arreglo con valores aleatorios Escribir "Original: "; Para i<-0 Hasta numeroElementos - 1 Con Paso 1 Hacer arreglo[i] <- azar(100); Escribir arreglo[i], " " Sin Saltar; FinPara Escribir ""; // Modo de ordenamiento Escribir "El modo de ordenamiento a usar (ASC/DESC)"; leer ordenamiento; ordenamiento <- Mayusculas(ordenamiento); // Si no es ASC o DESC, mostramos un error Si ordenamiento <> "ASC" Y ordenamiento <> "DESC" Entonces Escribir "El ordenamiento no es correcto"; SiNo FinSi FinProceso
Ordenar arreglo
A continuación, ya vamos con la parte de ordenar el arreglo, los pasos que vamos a realizar son los siguientes:
- Recorremos el arreglo de 0 a x-1, siendo x su longitud.
- Obtenemos la posición actual, guardándola en una nueva variable llamada pos.
- Buscamos en el mismo arreglo, empezando en la siguiente posición, el elemento a intercambiar con la posición actual, esto dependerá del modo de ordenamiento.
- Si encontramos un valor mayor o menor de la posición actual (según el modo de ordenamiento), lo guardamos su posición en la variable pos.
- Intercambiamos los valores de la posición actual con la encontrada.
- Mostramos el arreglo
Todo esto, se traduce de la siguiente forma:
Proceso OrdenarArreglo // Definicion de variables definir arreglo, numeroElementos, i,j, pos, aux como numero; definir ordenamiento como cadena; // inicializacion de variables dimension arreglo[10]; numeroElementos <- 10; // Crear arreglo con valores aleatorios Escribir "Original: "; Para i<-0 Hasta numeroElementos - 1 Con Paso 1 Hacer arreglo[i] <- azar(100); Escribir arreglo[i], " " Sin Saltar; FinPara Escribir ""; // Modo de ordenamiento Escribir "El modo de ordenamiento a usar (ASC/DESC)"; leer ordenamiento; ordenamiento <- Mayusculas(ordenamiento); // Si no es ASC o DESC, mostramos un error Si ordenamiento <> "ASC" Y ordenamiento <> "DESC" Entonces Escribir "El ordenamiento no es correcto"; SiNo // Recorremos los elementos Para i<-0 Hasta numeroElementos - 1 Con Paso 1 Hacer // Guardamos el valor de i en pos pos <- i; // Recorremos desde la siguiente posicion // Buscamos el elemento menor (ASC) o mayor (DESC) para intercambiarlo Para j<-i+1 Hasta numeroElementos - 1 Con Paso 1 Hacer Si (ordenamiento = "ASC" Y arreglo[j] < arreglo[pos]) o (ordenamiento = "DESC" Y arreglo[j] > arreglo[pos]) Entonces pos <- j; FinSi FinPara // Intercambiamos la variable aux <- arreglo[i]; arreglo[i] <- arreglo[pos]; arreglo[pos] <- aux; FinPara // Mostramos el resultado escribir "Resultado:"; Para i<-0 Hasta numeroElementos - 1 Con Paso 1 Hacer Escribir arreglo[i], " " Sin Saltar; FinPara FinSi FinProceso
Resultado final
Por fin, ejecutamos nuestro programa de 3 formas:
- Eligiendo ASC.
- Eligiendo DESC.
- Escribiendo cualquier cosa que no sea ASC o DESC.
Aquí tienes el repositorio github donde ver el código.
Te dejo un video para que lo veas todo el proceso.
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Deja una respuesta