Algoritmo para generar los números de la primitiva

Uno de los ejercicios que hemos realizado en clase ha sido el de generar seis números aleatorios para el juego de la PRIMITIVA (números entre 1 y 49). Como mejora se establecía el tener en cuenta que no se puedan repetir. Este es un ejemplo de como realizar dicho algoritmo. También me va a servir este ejemplo para remarcar la importancia de la documentación del código, los comentarios.

Funcion res = encontrado(b,n,i)
// Función: determina si el valor n está en el array b en las i-1 posiciones indicadas
// Entradas: b array de valores; n el valor a comprobar si está; i indica las posiciones que quiero comprobar
// Salida: valor lógico indicando si lo ha encontrado (verdadero) o no (falso)
Definir res Como Logico
Definir j Como Entero
res <- falso
Para j<-1 Hasta i-1 Hacer
Si b[j]=n Entonces
res <- verdadero
FinSi
FinPara
FinFuncion

Funcion visualizar(b)
// Función: Visualizar el array
// Entradas: b el array de valores
// Salida: Ninguna
Definir j como entero
Para j<-1 Hasta 6 Hacer
Escribir b[j]
FinPara
FinFuncion

funcion intercambiar(a por referencia,b Por Referencia)
// Función: intercambia los valores pasados como argumentos
// Entradas: a y b, valores a intercambiar
// Salida: a con el valor de b y b con el valor de a
Definir c como real
c=a
a=b
b=c
FinFuncion

Funcion ordenar(b)
// Función: ordena array
// Entradas: b el array desordenado
// Salida: b el array ordenado
Definir i,j como entero
Para i=2 hasta 6 hacer
Para j=1 hasta 6-i+1 Hacer
si b[j]>b[j+1] Entonces
intercambiar(b[j],b[j+1])
FinSi
FinPara
FinPara
FinFuncion

Algoritmo Generador_de_primitivas
// Declaración de variables
// i es un contador 
// b es el array de 6 elementos
// n será el valor aleatorio obtenido
Definir i,b,n Como Entero
Dimension b[6]
// Proceso que irá determinado valores al azar, si no está en el array lo insertará 
// y determinará otro hasta llegar a 6. Si un valor ya está en array se repite la búsqueda
i <- 1
Repetir
n <- azar(49)+1
Si  NO encontrado(b,n,i+1) Entonces
b[i] <- n
i <- i+1
SiNo
Escribir 'Valor repetido (',n,')...buscando otro'
FinSi
Hasta Que i>6
ordenar(b)
// visualiza los elementos encontrados
// Una mejora sería que los mostrase ordenados
Escribir 'Los número obtenidos para tu primitiva son...'
visualizar(b)
FinAlgoritmo

Tenemos varios ejemplos de funciones o subprocesos y de los distintos tipos que se han comentado en clase; en algunos casos devuelven un valor (función encontrado), en otro se pasan dos valores por referencia (función intercambiar) y por último, tenemos una función que no devuelve nada ya que solo sirve para visualizar el contenido del array. 
Tened en cuenta que en la función ordenar, a la cual le pasamos el array con los seis números no se pasa por referencia ya que en el caso de los arrays no es necesario.

Aquí está el diagrama de flujo del algoritmo principal.
Esta es la función para determinar si un número existe en el array... buscando  en el array b, indicando el valor que quiero saber si está o no y hasta que posición quiero que lo busque.


No hay comentarios:

Publicar un comentario