Obiettivo: Sono riportati in seguito una serie di esercizi utili per testare le proprie conoscenze nell’ambito dei linguaggi di programmazione strutturata relativamente all’utilizzo dei numeri randomici (numeri casuali).
Gli esercizi, a complessità crescente, prevedono inizialmente la semplice generazione di numeri random ed infine applicazioni più complesse che richiedono l’impiego di cicli iterativi e blocchi condizionali.
Per la risoluzione degli esercizi si suggerisce l’utilizzo del compilatore online:
https://www.onlinegdb.com/online_c++_compilerESERCIZI CON NUMERI RANDOMICI
1) Realizzare un programma che simuli il lancio di un dado a sei facce e riporti il risultato.
2) Realizzare un programma che simuli il lancio di una moneta e riporti il risultato (testa o croce).
3) Realizzare un programma che simuli il lancio di un dado a 20 facce (utile per i giocatori di Dungeons and Dragons) e riporti il risultato.
4) Realizzare un programma che permetta all’utente di definire il numero di facce di un dado e ne simuli il lancio riportando il risultato.
ESERCIZI CON NUMERI RANDOMICI E BLOCCHI CONDIZIONALI
5) Realizzare un programma che simuli il lancio di due dadi a sei facce e dopo avere riportato il risultato indichi se è uscita una coppia di numeri uguali.
6) Realizzare un programma per simulare il gioco dei dadi. Prima del lancio, il giocatore deve indovinare se il numero risulti maggiore di 3 oppure minore di 4. La scelta tra le due opzioni può essere effettuata attraverso un semplice menu (ad esempio: “premi 0 per puntare su un numero minore di 4” / “premi 1 nel caso in cui il numero risulti maggiore di 3”). Il programma deve visualizzare il risultato del lancio del dado e indicare se l’utente ha indovinato la previsione oppure no.
7) Realizzare un programma per simulare il gioco dei dadi per due differenti giocatori. Prima del lancio del dado, ciascun giocatore deve scegliere un numero compreso tra 1 e 6. Il programma deve simulare il lancio di un dado generando un numero casuale tra 1 e 6 e visualizzare il risultato ottenuto. Al termine del lancio, il programma deve confrontare il numero estratto con le scelte dei due giocatori e indicare il vincitore:
– vince il giocatore che ha indovinato il numero esatto;
– nel caso in cui entrambi i giocatori indovinino, la partita termina in pareggio;
– se nessuno dei due indovina, il programma deve segnalare che non ci sono vincitori.
ESERCIZI CON NUMERI RANDOMICI E CICLI ITERATIVI
8) Realizzare un programma che simuli 5 lanci di un dato a sei facce e determini quante volte è uscito il numero 6.
9) Migliorare il programma di simulazione del gioco dei dadi sviluppato nell’esercizio 6. Introdurre un ciclo definito che permetta di giocare per 5 volte ed un contatore delle vittorie.
10) Migliorare il programma di simulazione del gioco dei dadi sviluppato nell’esercizio 7. Introdurre un ciclo definito che permetta di giocare per 5 volte ed un contatore delle vittorie. Al termine delle 5 partite il programma deve indicare quale dei due giocatori ha vinto.
11) Realizzare un programma che permetta di simulare l’estrazione del lotto attraverso la generazione di 5 numeri casuali nel range 1-90. Attenzione i numeri non possono essere ripetuti e devono risultare equiprobabili.
12) Realizzare un programma che generato un numero naturale nel range 0-10, permetta all’utente di indovinare il numero generato. Il programma deve terminare quando il numero viene indovinato (CICLO INDEFINITO).
12bis) Realizzare un programma che generato un numero naturale nel range 0-10, permetta all’utente di indovinare il numero generato. Il programma deve terminare quando il numero viene indovinato (CICLO INDEFINITO). Ad ogni iterazione, nel caso in cui l’utente non abbia individuato, deve essere fornito un feedback all’utilizzatore in cui si riporta se il numero generato risulta maggiore o inferiore al numero inserito.
13) Realizzare un programma che:
– Chieda all’utente il numero di lanci da effettuare con un dato a sei facce
– Generi tanti numeri randomici nel range 1-6 pari al numero di lanci indicato dall’utente. (CICLO DEFINITO)
– Ripete la procedura fino a che l’utente non inserisce un numero negativo (CICLO INDEFINITO).
E’ importante considerare che la soluzione di questo programma prevede l’utilizzo di due cicli innestati.
14) Realizzare un programma che generi numeri casuali compresi tra 1 e 6. L’estrazione deve proseguire finché il numero generato è pari; il programma termina quando viene estratto un numero dispari.
15a) Realizzare un programma che simuli il lancio di tre dadi (numeri casuali compresi tra 1 e 6). L’estrazione deve proseguire fino a che la somma dei numeri generati non diventa maggiore di 10. (Per somme maggiori di 10 il ciclo deve terminare)
15b) Realizzare un programma che simuli il lancio di tre dadi, generando per ciascun dado un numero casuale compreso tra 1 e 6. Dopo ogni lancio, il programma deve verificare se almeno uno dei tre dadi mostra il valore 6: in tal caso l’utente deve effettuare un nuovo lancio dei tre dadi. Il gioco termina quando nessuno dei tre dadi assume il valore 6.
15c) Realizzare un programma che simuli il lancio di tre dadi, generando per ciascun dado un numero casuale compreso tra 1 e 6. Dopo ogni lancio, il programma deve verificare se a tutti e tre i numeri hanno un valore dispari. In tal caso l’utente deve effettuare un nuovo lancio dei tre dadi. Il gioco termina quando almeno uno dei numeri estratti non è dispari.
15d) Realizzare un programma che simuli il lancio di tre dadi, generando per ciascun dado un numero casuale compreso tra 1 e 6. Dopo ogni lancio, il programma deve verificare se almeno due dei tre i numeri hanno un valore maggiore di 3. In tal caso l’utente deve effettuare un nuovo lancio dei tre dadi.
SEMPLICI PROGETTI:
16) Scrivere un programma in C++ che simuli la riproduzione di una playlist musicale. La playlist è composta da 5 brani.
1) Blinding Lights – The Weeknd
2) As It Was – Harry Styles
3) Bad Guy – Billie Eilish
4) Flowers – Miley Cyrus
5) Levitating – Dua Lipa
L’utente sceglie quante canzoni vuole riprodurre in sequenza. Il programma genera tanti numeri casuali quante sono le canzoni da riprodurre e, per ogni numero generato, indica la canzone corrispondente.
17a) Realizzare un programma che simuli una partita a sette e mezzo. L’obiettivo del gioco è avvicinarsi il più possibile a sette e mezzo attraverso l’estrazione di numeri casuali. Ad ogni turno di gioco, il giocatore può scegliere se estrarre un numero oppure no. Ogni nuovo numero estratto si somma alla somma dei numeri precedentemente estratti. Il programma si deve fermare quando l’utente sceglie di smettere di giocare oppure quando supera il valore sette e mezzo. Nel caso in cui l’utente superi tale valore si riporti la scritta: “Hai Sballato”, differentemente nel caso in cui l’utente raggiunga il valore sette e mezzo si riporti la scritta “Hai vinto”. Il giocatore inizia sempre con un valore del banco pari a 0.5. In questa versione del gioco è possibile generare solo valori interi.
17b) Realizzare un programma che simuli una partita a due giocatori a sette e mezzo. L’obiettivo del gioco è avvicinarsi il più possibile a sette e mezzo attraverso l’estrazione di carte (nel nostro caso numeri) casuali. Il gioco prevede l’utilizzo di carte da gioco italiane le quali prevedono 4 differenti semi (bastoni, spade, coppe e denari) e 10 differenti tipologie di carte per ogni seme (asso, due, tre, quattro, cinque, sei, sette, fante, cavallo e re). Mentre le figure (fante, cavallo e re) valgono 0.5 le altre carte hanno valore pari al valore del simbolo rappresentato (un asso vale uno, un due vale due, etc…)
Ad ogni turno di gioco, il giocatore può scegliere se estrarre un numero oppure no. Ogni nuovo numero si somma alla somma dei numeri precedentemente estratti. Nel caso in cui l’utente superi il valore 7.5 l’utente ha automaticamente perso.
Il giocatore1 è sempre il primo ad iniziare la partita e può continuare ad estrarre carte fino a che non desidera fermarsi oppure supera il valore 7.5. Terminato il turno del giocatore1 inizia a giocare il giocatore2 che ugualmente può continuare ad estrarre carte fino a che non desidera fermarsi oppure supera il valore 7.5.
Terminato il turno del giocatore 2 il programma deve indicare chi ha vinto e chi ha perso.
17c) Si utilizzi un ciclo indefinito per permettere ai due giocatori dell’esercizio 16b di effettuare più partite in sequenza. Nel dettaglio, implementare una sfida alla meglio delle 5 partite, in questo caso vince la sfida il giocatore che vince per primo a 3 partite.
