Advertisement
r_russo

Azar

Oct 12th, 2021
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.78 KB | None | 0 0
  1. {
  2.     Escribir un programa que permita al usuario seleccionar entre 3 formas de generación de
  3.     números aleatorios:
  4.         - Monedas (cara/cruz)
  5.         - Dados tradicionales
  6.         - Dados personalizados (máximo > 3)
  7.     Permitir elegir la cantidad de eventos que se van a realizar (por ejemplo: una o más
  8.     monedas).
  9. }
  10.  
  11. program azar;
  12.  
  13. var
  14.     g_opcion: Char;
  15.     g_n: Word;
  16.     g_max: Byte;
  17.    
  18. procedure menu(var opcion: Char);
  19.    
  20. begin
  21.     writeln('Ingrese una opción');
  22.     writeln('1) Tirar una moneda');
  23.     writeln('2) Tirar varias monedas');
  24.     writeln('3) Tirar un dado');
  25.     writeln('4) Tirar varios dados');
  26.     writeln('5) Tirar un dado personalizado');
  27.     writeln('6) Tirar varios dados personalizados');
  28.     writeln('s) Salir');
  29.    
  30.     readln(opcion);
  31. end;
  32.  
  33. procedure tirar_moneda(n: Word);
  34. var
  35.     moneda: Byte;
  36.     i: Word;
  37.  
  38. begin
  39.     for i := 1 to n do
  40.     begin
  41.         moneda := random(2);
  42.         if moneda = 0 then
  43.             write('O ')
  44.         else
  45.             write('X ');
  46.     end;
  47.     writeln();
  48. end;
  49.  
  50. procedure tirar_dado(n: Word; max: Byte);
  51. var
  52.     dado: Byte;
  53.     i: Word;
  54.  
  55. begin
  56.     for i := 1 to n do
  57.     begin
  58.         dado := random(max) + 1;  // 1 - max
  59.         write(dado, ' ');
  60.     end;
  61.     writeln();
  62. end;
  63.  
  64. procedure ingreso_maximo(var max: Byte);
  65. begin
  66.     readln(max);
  67.     while max < 3 do
  68.     begin
  69.         writeln('El valor ingresado no es válido (debe ser > 3)');
  70.         readln(max);
  71.     end;
  72. end;
  73.  
  74. begin
  75.     randomize();
  76.     repeat
  77.         menu(g_opcion);
  78.        
  79.         if g_opcion <> 's' then
  80.         begin
  81.             case g_opcion of
  82.                 '1': tirar_moneda(1);
  83.                 '2':
  84.                 begin
  85.                     writeln('Ingrese cantidad de eventos:');
  86.                     readln(g_n);
  87.                     tirar_moneda(g_n);
  88.                 end;
  89.                 '3': tirar_dado(1, 6);
  90.                 '4':
  91.                 begin
  92.                     writeln('Ingrese cantidad de eventos:');
  93.                     readln(g_n);
  94.                     tirar_dado(g_n, 6);
  95.                 end;
  96.                 '5':
  97.                 begin
  98.                     writeln('Cuál es el valor máximo del dado:');
  99.                     ingreso_maximo(g_max);
  100.                     tirar_dado(1, g_max);  
  101.                 end;
  102.                 '6':
  103.                 begin
  104.                     writeln('Ingrese cantidad de eventos:');
  105.                     readln(g_n);
  106.                     writeln('Cuál es el valor máximo del dado:');
  107.                     ingreso_maximo(g_max);
  108.                     tirar_dado(g_n, g_max)
  109.                 end;
  110.             else
  111.                 writeln('Opción no válida');
  112.             end;
  113.         end;
  114.     until g_opcion = 's';
  115. end.
  116.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement