Advertisement
Fhernd

FijasYPicas.psc

May 22nd, 2013
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.02 KB | None | 0 0
  1. // Se encarga de poner el número pasado como argumento en un arreglo cifra por cifra
  2. // numero (entero): el número del que se extraen las cifras
  3. // arregloNumeros (arreglo de enteros): contiene las cuatro cifras del número
  4. SubProceso PasarAArreglo(numero,arregloNumeros)
  5.     Definir indiceArreglo Como Entero;
  6.     indiceArreglo<- 4;
  7.    
  8.     Mientras numero <> 0 Hacer
  9.         arregloNumeros(indiceArreglo)<- numero mod 10;
  10.        
  11.         numero<- TRUNC(numero/10);
  12.        
  13.         indiceArreglo<- indiceArreglo - 1;
  14.     FinMientras
  15. FinSubProceso
  16.  
  17. // Función que cuenta la cantidad de cifras que contiene el número pasado como argumento.
  18. // numero (entero): El número aleatorio generado por el sistema o introducido por el usuario.
  19. SubProceso cantidadCifras<-ContarCifras(numero)
  20.     Definir cantidadCifras Como Entero;
  21.     cantidadCifras<-0;
  22.        
  23.     Mientras numero <> 0 Hacer
  24.         numero<- TRUNC(numero / 10);
  25.         cantidadCifras<- cantidadCifras + 1;
  26.     FinMientras
  27. FinSubProceso
  28.  
  29. // Comprueba que no hayan cifras repetidas en el número introducido
  30. // arregloNumeros: Arreglo con las cifras a comprobar su ocurrencia.
  31. SubProceso repetido<-HayRepetidos(arregloNumeros)
  32.     Definir repetido Como Logico;
  33.     repetido<- Falso;
  34.    
  35.     Definir i,j Como Entero;
  36.    
  37.     // ciclo que busca cifras repetidas en el número introducido
  38.     Para i<-1 Hasta 3 Hacer
  39.         Para j<-(i+1) Hasta 4 Hacer
  40.             Si arregloNumeros(i) = arregloNumeros(j) Entonces
  41.                 repetido<- Verdadero;
  42.                 FinPara;
  43.             FinSi
  44.         FinPara
  45.     FinPara
  46. FinSubProceso
  47.  
  48. // Busca picas
  49. // número: La cifra a buscar en el número aleatorio generado por el sistema.
  50. // arregloOriginal: Arreglo que contiene las cifras del número aleatorio generado por el sistema.
  51. SubProceso encontro<-BuscarPica(cifra,arregloOriginal)
  52.     Definir encontro Como Logico;
  53.     Definir i Como Entero;
  54.    
  55.     encontro <- Falso;
  56.    
  57.     Para i <- 1 Hasta 4 Hacer
  58.         Si arregloOriginal(i) = cifra Entonces
  59.             encontro<-Verdadero;
  60.             FinPara;
  61.         FinSi
  62.     FinPara
  63. FinSubProceso
  64.  
  65. // Punto de Entrada inicia la ejecución del juego, invoca subprocesos y funciones auxiliares.
  66. Proceso PuntoEntrada
  67.     // Arreglo que contendrá las cifras del número aleatorio generado por el sistema.
  68.     Dimension arregloOriginal(4);
  69.     // Arreglo que contendrá las cifras del número intentado por el usuario.
  70.     Dimension arregloCifrasIntentoUsuario(4);
  71.    
  72.     Definir numeroDigitadoUsuario Como Entero;
  73.     Definir numeroAleatorio Como Entero;
  74.    
  75.     // pide el número al jugador
  76.     // Exige que el jugador escriba un número de cuatro (4) dígitos, y
  77.     // que además no contenga cifras repetidas
  78.     Repetir
  79.        
  80.         numeroAleatorio <- 1000 + azar(9000);
  81.        
  82.         PasarAArreglo(numeroAleatorio,arregloOriginal);
  83.        
  84.     Hasta Que HayRepetidos(arregloOriginal) = Falso
  85.    
  86.     // etc de variables
  87.     Definir picas, fijas, indice, intentos Como Entero;
  88.     Definir adivinado Como Logico;
  89.     adivinado <- Falso;
  90.     intentos <- 0;
  91.    
  92.     // empieza la comprobación de los intentos del jugador
  93.     Repetir
  94.         // comprueba que el número digitado por le usuario contenga cuatro cifras
  95.         // además la salida del ciclo está condicionada por la unicidad de cada
  96.         // una de las cifras del número digitado por el usuario.
  97.         Repetir
  98.             Escribir "Adivine el número (Intentos restantes: ", ( 10 - intentos ), "): ";
  99.             Leer numeroDigitadoUsuario;
  100.            
  101.             Si ContarCifras(numeroDigitadoUsuario) = 4 Entonces
  102.                 PasarAArreglo(numeroDigitadoUsuario,arregloCifrasIntentoUsuario);
  103.             Sino
  104.                 numeroDigitadoUsuario = 12345;
  105.                 Escribir "";
  106.                 Escribir "*** Advertencia ***";
  107.                 Escribir "[X] Dígite número de cuatro dígitos";
  108.                 Escribir "[X] Dígite número sin cifras repetidas";
  109.                 Escribir "";
  110.             FinSi
  111.         Hasta Que ContarCifras(numeroDigitadoUsuario) = 4  & HayRepetidos(arregloCifrasIntentoUsuario) = Falso
  112.        
  113.         // en cada intento se reestablece los contadores de picas y fijas
  114.         picas <- 0;
  115.         fijas <- 0;
  116.        
  117.         // cuenta el número de fijas y de picas.
  118.         Para indice <- 1 Hasta 4 Hacer
  119.             Si arregloOriginal(indice) = arregloCifrasIntentoUsuario(indice) Entonces
  120.                 fijas <- fijas + 1;
  121.             Sino
  122.                 // Es posible que se trate de una pica, entonces comprueba su existencia
  123.                 Si BuscarPica(arregloCifrasIntentoUsuario(indice), arregloOriginal) = Verdadero Entonces
  124.                     picas <- picas + 1;
  125.                 FinSi
  126.             FinSi
  127.         FinPara
  128.        
  129.         // El jugador ha adivinado el número cuando el número de
  130.         // picas es igual a 4.
  131.         Si fijas = 4 Entonces
  132.             adivinado <- Verdadero;
  133.         Sino // En caso contrario le muestra el número de fijas y picas.
  134.             Escribir "";
  135.             Escribir "--- Estado Actual ---"
  136.             Escribir "Picas: ", picas, " - Fijas: ", fijas;
  137.             Escribir "---------------------";
  138.             Escribir "";
  139.            
  140.             intentos<- intentos + 1;
  141.         FinSi
  142.     Hasta Que adivinado = Verdadero O Intentos = 10
  143.    
  144.     // Felicita al jugador cuando ha adivinado el número
  145.     Si adivinado = Verdadero Entonces
  146.         Escribir "";
  147.         Escribir "***** Felicitaciones. Ha adivinado el número: ", numeroAleatorio, " *****";
  148.         Escribir "";
  149.     Sino
  150.         Escribir "";
  151.         Escribir "Lo sentimos. No ha logrado adivinar el número: ", numeroAleatorio , ".";
  152.         Escribir "";
  153.     FinSi
  154. FinProceso
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement