Master Mind Scopo del gioco è indovinare una combinazione di 4 cifre fra 0 e 9 nel minor numero di tentativi possibile. Ad ogni tentativo si ottengono come risposta: - Il numero delle cifre corrette - Il numero delle cifre presenti anche nella soluzione ma in posizioni ‘sbagliate’ Ad esempio, se la soluzione fosse 1234 1832 darebbe come risposta 2 1 1432 darebbe come risposta 2 2 0789 darebbe come risposta 0 0 La partita termina quando si ottiene risposta 4 0 Esempio di partita (soluzione: 1234) Tentativo n. 1 9807 00 Tentativo n. 2 3456 02 Tentativo n. 3 5312 03 Tentativo n. 4 1432 22 Tentativo n. 5 4231 22 Tentativo n. 6 1234 40 Bravo, hai indovinato in 6 tentativi! Funzione rand() ( stdlib.h ) Genera un numero intero casuale compreso fra 0 e RAND_MAX . Quindi (rand()-1)/RAND_MAX restituisce un numero compreso in [0,1) Se voglio generare un numero x compreso fra 0 e N-1 posso quindi scrivere X = (rand()-1)/(RAND_MAX/N) [= N*(rand()-1)/RAND_MAX] Per evitare che il numero random generato sia sempre lo stesso bisogna chiamare la funzione randomize() prima di usare rand(). NB randomize() esiste solo nel Borland C, non è conforme allo standard ANSI C. Algoritmo: Begin Genera una combinazione di 4 numeri A,B,C,D Definisci 4 variabili intere: A1, B1, C1, D1 [conterranno i tentativi del giocatore] Definisci 2 variabili intere: Corrette e Spostate e ponile a 0 Definisci una variabile Niterazioni e poni Niterazioni=0 While (Corrette!=4) Begin Poni Corrette=0 e Spostate=0 Leggi A1, B1, C1, D1 Se A1 è uguale ad A Corrette=Corrette+1 altrimenti se A1 è uguale a B,C, o D Spostate=Spostate+1 Se B1 è uguale a B ….. Se C1 è uguale a C ….. Se D1 è uguale a D ….. Stampa Corrette e Spostate Niterazioni=Niterazioni+1 End Scrivi “Bravo, hai indovinato in (Ntentativi) tentativi!” End Esercizio Riscrivere il programma precedente, semplificandolo utilizzando due vettori di 4 elementi int soluzione[4], tentativo[4]; per contenere la soluzione e il tentativo del giocatore Esercizi di base sull’uso dei vettori - Scrivere un programma che memorizzi 10 numeri interi casuali compresi fra 0 e 100 (generati come indicato sopra utilizzando la funzione rand()) in un vettore, li stampi e ne calcoli il massimo - Scrivere un programma che memorizzi 10 numeri interi casuali compresi fra 0 e 10 (generati come indicato sopra utilizzando la funzione rand()) in un vettore, li stampi e conti quante volte un numero specificato dall’utente appare nella sequenza. - Scrivere un programma che chieda N numeri da tastiera, li memorizzi in un vettore (controllando che la dimensione del vettore definito sia sufficiente a contenerli) e ne calcoli la somma. - Scrivere un programma che generi i primi N numeri interi, li memorizzi in un vettore (controllando che la dimensione del vettore definito sia sufficiente a contenerli) e stampi solo i numeri pari