fcamuso

Lezion 21, ciclo do while

Apr 12th, 2026
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.21 KB | None | 0 0
  1. /* Gioco della Roulette semplificato
  2. *  
  3.  
  4. */
  5. import std;
  6.  
  7. int estrai_numero(int min, int max)
  8. {
  9.     //istanziamo un oggetto seme random hardware
  10.     std::random_device rd{};
  11.  
  12.     //e usiamolo per inizializzare il generatore (sequenze sempre diverse)
  13.     std::mt19937 generatore(std::random_device{}());
  14.  
  15.     //'spalma' i numeri estratti dal generatore secondo
  16.     //una distribuzione uniforme
  17.     std::uniform_int_distribution<> distr(min, max);
  18.  
  19.     return distr(generatore);
  20. }
  21.  
  22. int leggi_intero(std::string messaggio, int min, int max)
  23. {
  24.     int valore{};
  25.  
  26.     do
  27.     {
  28.         std::print(messaggio);
  29.         std::cin >> valore;
  30.  
  31.         if (valore<min || valore>max)
  32.         {
  33.             std::println("Valore non nell'intervallo richiesto");
  34.         }
  35.  
  36.     } while (valore<0 || valore>max);
  37.  
  38.     return valore;
  39. }
  40.  
  41. auto main() -> int
  42. {
  43.     const int coefficiente_vincita = 35;
  44.     int soldi_posseduti{ 500 }; //euro
  45.     std::println("Parti con {} euro", soldi_posseduti);
  46.    
  47.  
  48.     while (soldi_posseduti > 0)
  49.     {
  50.         int puntata{};
  51.         int su_cosa{};
  52.  
  53.         puntata = leggi_intero("Quanto punti (0 per smettere di giocare) -> ", 0, soldi_posseduti);            
  54.  
  55.         if (char risposta{};  puntata == 0)
  56.         {
  57.             std::print("Sei sicuro di voler smettere di giocare (s/n) -> ");
  58.             std::cin >> risposta;
  59.  
  60.             if (std::tolower(risposta) == 's')  break;
  61.                
  62.         }
  63.  
  64.         su_cosa = leggi_intero("Su quale numero -> ", 1, 36);
  65.  
  66.         int estratto = estrai_numero(0, 36);
  67.         std::println("E' uscito il numero {}", estratto);
  68.  
  69.         if (su_cosa == estratto)
  70.         {
  71.             std::print("Hai vinto, ti rimangono ");
  72.             soldi_posseduti += coefficiente_vincita * puntata;
  73.             //soldi_posseduti += puntata;
  74.         }
  75.         else
  76.         {
  77.             std::print("Hai perso, ti rimangono ");
  78.             soldi_posseduti = soldi_posseduti - puntata;
  79.         }
  80.  
  81.         std::println("{} euro\n", soldi_posseduti);
  82.  
  83.  
  84.         //oppure, molto piu' compatto
  85.         //soldi_posseduti += su_cosa == estratto ? puntata : -puntata;
  86.     }
  87.  
  88.     std::println("{}", soldi_posseduti);
  89.    
  90. }
  91.  
Advertisement
Add Comment
Please, Sign In to add comment