Progettare e implementare un software in linguaggio C++ che simuli il gioco testa o croce.
Il gioco testa o croce prevede che un utente possa giocare contro un esecutore tentando di indovinare se il lancio della monetina avrà come risultato finale “testa” oppure “croce”. Chiaramente l’esecutore non può lanciare una moneta, modelleremo col valore 0 la testa e col valore 1 la croce.
Analisi del problema
Dati Input: scommessa
Dati Output: vittoria* , sconfitta*
Variabili
(scommessa, _ , int)
(risultatoLancio,_int)
Nella variabile scommessa memorizziamo la scommessa dell’utente. E’ di tipo intero perchè se l’utente vuole scommettere croce dovrà inserire il valore 0 mentre se l’utente vuole scegliere testa inserirà il valore 1.
Progetto
Il flusso algoritmico che permette di risolvere questo problema potrebbe essere il seguente. Per prima cosa, dopo aver dichiarato le variabili, possiamo stampare alcune informazioni sul gioco all’utente:
A questo punto leggiamo il valore che l’utente immette e generiamo un valore casuale
A questo punto è necessario controllare se la scommessa effettuata dall’utente è uguale al risultato del lancio generato casualmente dell’esecutore:
In complesso l’algoritmo è il seguente:
Implementazione
L’algoritmo così progettato può essere implementato in linguaggio C++ ricordando che i numeri casuali possono essere generati utilizzando la funzione rand(). Più nel dettaglio
//scelta del seme
srand(time(NULL));
//generazione del numero
int num = rand()%2;
La funzione srand serve per poter attivare un seme diverso ad ogni generazione del numero casuale. Per usare la funzione time e la funzione rand è necessario infine importare le seguenti librerie:
#include <iostream>
#include <cstdlib>
#include <time.h>
L’implementazione del progetto completo sarà quindi:
#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;
int main(int argc, char** argv) {
int scommessa;
int risultatoLancio;
//scelta del seme
srand(time(NULL));
cout<<" TESTA O CROCE "<<endl;
cout<<" Digita 0 per croce e 1 per testa"<<endl;
cin>>scommessa;
risultatoLancio = rand()%2;
if(scommessa==risultatoLancio)
{
cout<<" VITTORIA :) ";
}
else
{
cout<<" SCONFITTA :( ";
}
system("pause");
return 0;
}
Torna a selezione