Sei sulla pagina 1di 5

S​CUOLA​ P​OLITECNICA 

I​NGEGNERIA​ I​NFORMATICA 

C​ORSO​ ​DI​ C ​ LCOLATORI​ ​EL​ ETTRONICI 


​ A
A.A. 2018/19 
F​ONDAMENTI​ D
​ I​ P
​ ​ROGRAMMAZIONE 
Ing. Antonio Bordonaro 
 

Esercitazione 4  
 
1. Scrivere un programma in C che genera 10 numeri interi ​casuali​ compresi fra 1 e 20. Stampare a schermo 
la sequenza dei valori e la somma dei soli valori pari. 
 
2. Scrivere un programma in C che chieda all’utente di inserire n
​ ​1​, n
​ ​2​ ed n
​ ​3​ (​ i​ nt​).  
Generare ​n1​ ​ numeri casuali interi compresi fra n
​ ​2​ ed ​n​3​. 
 
3. Scrivere un programma in C che permetta l’inserimento di un ​carattere (​ ​char​) e individui i seguenti casi: 
● lettera ​dell’​alfabeto ​(caratteri compresi fra​ ​a-z​ e​ A​ -Z​) 
● carattere numerico (​ caratteri compresi fra ​0-9​) 
● carattere speciale​ (segni di interpunzione o comunque nessun caso precedente) 
 
4. Scrivere un programma in C che faccia inserire all’utente un intero n
​ (​ ​int​) e ne stampi a schermo la 
rappresentazione binaria. 
Esempio:  
L’utente inserisce il valore 17 
Il programma stamperà a schermo:  
La rappresentazione binaria del valore 17 è: 1 0 0 0 1
(​poiché 1​ x​ ​ 2​ ​ + 0 ​x​ 2​ ​ + 0 ​x​ ​2​ + 0 ​x​ 2​ ​ + 1 ​x​ 2​ ​ = 1 + 16 = 17 )  
0​ 1​ 2​ 3​ 4​

 
5. Scrivere un programma in C che faccia inserire all’utente un intero n
​ (​ ​int​) composto da soli 0
​ e​ ​1.​  
Si i​ nterpreti n c​ ome valore binario e se ne calcoli la rappresentazione decimale. 
Esempio:  
L’utente inserisce il valore ​10101 
Il programma stamperà a schermo:  
La rappresentazione decimale del valore 10101 è: 21
(​poiché 1​ x​ ​ 2​ ​ + 0 ​x​ 2​ ​ + 1 ​x​ ​2​ + 0 ​x​ 2​ ​ + 1 ​x​ 2​ ​ = 1 + 4 + 16 = 21 )  
0​ 1​ 2​ 3​ 4​

6. Scrivere un programma in C che permetta all’utente di inserire valori (​int​) fino a quando non viene 
inserito il valore 0. Al termine dell’acquisizione, il programma dovrà stampare a schermo i due interi 
inseriti con valore massimo. 
Esempio:  
L’utente inserisce i valori 10 12 4 5 3 5 8 11 20 11 18 17 5 
Il programma stamperà a schermo:  
I dua valori più grandi inseriti sono: 20 e 18 


S​CUOLA​ P​OLITECNICA 
I​NGEGNERIA​ I​NFORMATICA 

7. Scrivere un programma in C che faccia inserire all’utente i valori ​a e​ ​b (​ ​int​).  


Calcolare il valore a​ modulo b ​senza usare l’operatore modulo (%). 
 
8. Scrivere un programma in C che faccia inserire all’utente due valori ​row, col (​ i​ nt​) e stampi a schermo 2 
matrici ​fatte da ​row r​ ighe e da ​col e​ formattate come​: 
 
A
​ ) * * * * * * * ​ ​B)  - - - * - - - 
* - - - - - * - - - * - - - 
* - - - - - * * * * * * * *
* - - - - - * - - - * - - -
* * * * * * * - - - * - - - 
 
9. Scrivere un programma in C che faccia inserire c​ aratteri ​(​char​) all’utente fino al riconoscimento della 
sequenza (continua e senza interruzioni) ‘​ h’, ‘e’, ‘l’, ‘l’, ‘o’.

Se, durante il riconoscimento, il carattere inserito non corrisponde al carattere corretto per continuare la 
sequenza, il riconoscimento dovrà ripartire dall’inizio. (per esempio, se il prossimo valore da inserire è la 
‘e’ e l’utente inserisce il carattere ‘k’, il riconoscimento dovrà ricominciare dall’inizio ed il prossimo 
carattere atteso sarà ‘h’). 
 
10. Scrivere un programma in C che calcoli il prodotto di tutti i numeri primi minori di n
​ (​ ​int​). Il valore ​n 
viene inserito dall’utente. 
 
11. Siano P1 = (x1 , y1), P2 = (x2 , y2)P1 = (x1 , y1), P2 = (x2 , y2) e P​3 ​= (​x3​​ , y​3​)​ punti
​ in uno spazio 
bidimensionale.  
Scrivere un programma in C che permetta l’inserimento, da parte dell’utente, delle coordinate dei 3 
punti (​float​) nell’ordine (​x1​​ , y​1​ ,​ ​x2​​ , y​2​ , x​3​ , y​3​ ​)​. 
Dopo aver verificato che sia possibile ​costruire i​ l rettangolo di vertici (P​1 , ​P​2 ​), il programma dovrà 
calcolare se P​3​ è interno al rettangolo o meno. 
Se P​3​ non è interno al rettangolo, stampare anche la posizione (individuata da un valore numerico) 
secondo la seguente figura: 


S​CUOLA​ P​OLITECNICA 
I​NGEGNERIA​ I​NFORMATICA 

 
12. Scrivere un programma in C che, dato n
​ ​ (​int​) trovi il valore m
​ ​ (minore di n) tale che la somma dei primi 
m​ numeri sia minore o uguale a ​n.​ Il valore ​n v​ iene inserito dall’utente. 
Esempio:  
L’utente inserisce il valore ​16 
Il programma stamperà a schermo:  
m = 5
(​poiché 1 + 2 + 3 + 4 + ​5​= 15, mentre per m=6 , la somma diventerebbe 1 + 2 + 3 + 4 + 5 + 6 = 21, che è maggiore di 16) 
 
13. Scrivere un programma in C che, fatto inserire un valore n
​ (​ ​int​) dall’utente, calcoli il m
​ inore​ multiplo di 
10 strettamente maggiore di n
​ ​. 
Esempio:  
L’utente inserisce il valore ​81 
Il programma stamperà a schermo:  
Il minor multiplo di 10 maggiore di 81 è: 90
   
14. Scrivere un programma in C che, fatti inserire i due valori r​ ow, col ​(​int​) all’utente, stampi a schermo la 
matrice d
​ i ​row r​ ighe e ​col c​ olonne in cui il primo elemento (prima riga e prima colonna) abbia valore 1 e 
ogni elemento successivo (elemento sulla stessa riga, ma colonna successiva) abbia valore uguale al 
precedente incrementato di 1. 
Esempio:  
L’utente inserisce i valori 3 e 4 
Il programma stamperà a schermo:  
1 2 3 4
5 6 7 8
9 10 11 12

15. Scrivere un programma in C che permetta l’inserimento delle coordinate (​float​) dei punti P​1 =
​ (​x1​​ , y​1​) e 

P​2 ​= (​x2​​ , y​2​). Calcolare la distanza dei due punti e le coordinate del punto medio. 
 
16. Scrivere un programma in C che permetta all’utente di inserire valori (​int​) compresi fra 1 e 4 (compresi) 
fino a quando non viene inserito il valore 0. 
Stampare a schermo degli i​ stogrammi ​(realizzati utilizzando il carattere ‘​*​’) relativi alle frequenze dei 
valori inseriti. 
Esempio:  
L’utente inserisce i valori 1 1 3 4 2 3 4 3 1 3 4 1 3 4   
Il programma stamperà a schermo:  
Valore 1: * * * *
Valore 2: *
Valore 3: * * * * *
Valore 4: * * * *
 


S​CUOLA​ P​OLITECNICA 
I​NGEGNERIA​ I​NFORMATICA 

17. Scrivere un programma in C che chieda all’utente di inserire un valore ​n​ ​(​int​) e ne calcoli il fattoriale. 
Esempio:  
L’utente inserisce il valore 6   
Il programma stamperà a schermo:  
6! = 720
(​poiché 6 ​x​ 5​ ​x​ 4​ ​x​ 3​ ​x​ 2​ ​x​ ​1 = 720) 

18. Scrivere un programma in C che permetta l’inserimento di una sequenza di valori (​int​) fino a quando 
non venga inserito il valore 0. 
Alla fine dell’acquisizione, il programma dovrà indicare se la sequenza inserita è ordinata in senso 
crescente, decrescente o​ non ordinata. 
 
19. Scrivere un programma in C che faccia inserire all’utente due valori (​int​) che verranno interpretati come 
numeratore e​ ​denominatore d
​ i una frazione. Calcolare la f​ orma ridotta ​della frazione, cioè la frazione 
equivalente c​ on numeratore e denominatore senza fattori in comune. 
Esempio:  
L’utente inserisce il valore 120 25   
Il programma stamperà a schermo:  
120/25 = 24/5
 
20. Scrivere un programma in C che implementi un gioco a scommesse basato sul l​ ancio dei dadi​

Il gioco è basato su un meccanismo di puntata nel quale, il giocatore, coerentemente con il suo b​ udget​, 
può scommettere sul prossimo valore che sarà estratto dal lancio di un dado. 
Il giocatore inizia con un budget di 100 u
​ nità​. 
Il gioco prevede un semplice menu nel quale vengono mostrate, oltre ad un breve riepilogo della partita 
(​budget​, n
​ umero puntate effettuate ​e n
​ umero di puntate indovinate​), le voci: 

1. Punta 

Il gioco chiede quanto l’utente intende puntare. L’utente inserisce un valore e, se minore del suo 
budget, si procede al lancio del dado. Viceversa, se la quota della puntata dovesse essere maggiore 
al budget posseduto dall’utente, il gioco chiede di inserire un valore corretto (tale operazione si 
ripete fino a quando il giocatore inserisce un valore corretto della puntata). 
Dopo aver specificato il valore della puntata, il gioco chiede all’utente il ​numero s​ ul quale 
intende puntare. L’inserimento del numero sul quale puntare viene ripetuto fino a quando 
l’utente non inserisce un valore compreso fra 1 e 6. 
A questo punto, viene lanciato il dado. 
Se l’utente ha indovinato il numero, vince esattamente 4 volte la puntata, altrimenti perde la 
puntata fatta (per esempio, se l’utente ha un budget di 100, e punta 10, alla fine, se indovina il 
numero, avrà un budget di 130, mentre se non indovina avrà un budget di 90). 


S​CUOLA​ P​OLITECNICA 
I​NGEGNERIA​ I​NFORMATICA 

Se l’utente non indovina il numero, e perde tutto il budget, il gioco termina e vengono mostrate 
le statistiche di gioco (le stesse definite al punto 2). 

2. Mostra​​statistiche 

Vengono visualizzate a schermo le statistiche correnti della partita. Nello specifico, viene 
mostrato: 

● budget di partenza (iniziale) 


● budget attuale 
● totale soldi vinti (valore cumulativo dall’inizio della partita) 
● totale soldi persi (valore cumulativo dall’inizio della partita) 
● valore massimo budget posseduto 
● valore minimo budget posseduto 
● massima vincita in una sola puntata 
● numero puntate effettuate 
● numero puntate indovinate 
● numero puntate non indovinate 
● frequenze dei valori estratti (quante volte è uscito il numero 1, quante volte il numero 2 
…) 
● frequenza numeri puntati (quante volte si è puntato sul numero 1, quante sul numero 
2…) 

Dopo aver mostrato le statistiche (che dovranno essere visualizzate in un’unica schermata), 
visualizzare nuovamente il menu. 

3. Esci 
La partita termina e vengono mostrate le statistiche di gioco (punto 2)