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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.