[SOL] Esercizio n. 58 Selettive (58_selettive)
Spiegazione del Gioco del Numero Segreto
Obiettivo del Programma
Questo programma implementa un semplice gioco di indovinelli dove l'utente deve cercare di indovinare un numero segreto (37). Il programma fornisce diversi tipi di feedback in base al tentativo dell'utente.
Analisi del Codice
#include <iostream>
using namespace std;
int main(){
int segreto = 37;
int numero;
Dichiarazione delle Variabili
segreto = 37: contiene il numero che l'utente deve indovinarenumero: conterrà il tentativo inserito dall'utente
Input dell'Utente
cout << "Inserire un numero: ";
cin >> numero;
Il programma chiede all'utente di inserire un numero e lo memorizza nella variabile numero.
Logica di Controllo
Il programma utilizza una struttura if-else per gestire due casi principali:
CASO 1: Numero Indovinato
if (numero == segreto){
cout << "Indovinato!" << endl;
}
Se il numero inserito è esattamente 37, il programma stampa "Indovinato!".
CASO 2: Numero NON Indovinato
else{
cout << "NON indovinato!" << endl;
int differenza = numero - segreto;
if (differenza >= -3 && differenza <= 3)
cout << "Fuochino!" << endl;
}
Quando il numero non è corretto, il programma:
- Stampa "NON indovinato!"
- Calcola la differenza tra il numero inserito e quello segreto
- Se la differenza è compresa tra -3 e +3 (cioè il numero è "vicino"), stampa anche "Fuochino!"
Funzionalità "Fuochino"
La condizione differenza >= -3 && differenza <= 3 significa che:
- Se inserisco 34, 35, 36, 38, 39 o 40 → ottengo "Fuochino!" (sono vicino al 37)
- Se inserisco numeri più lontani → non ottengo "Fuochino!"
Codice Commentato (Alternativa)
Nel codice è presente un commento che mostra un metodo alternativo usando la funzione abs():
/* CON abs --> Valore assoluto
if (abs(numero - segreto) <= 3)
cout << "Fuochino!" << endl;
*/
Questo approccio è più elegante perché:
abs()restituisce il valore assoluto della differenza- Non serve controllare sia i valori positivi che negativi
Esempi di Esecuzione
- Input: 37 → Output: "Indovinato!"
- Input: 35 → Output: "NON indovinato!" + "Fuochino!"
- Input: 40 → Output: "NON indovinato!" + "Fuochino!"
- Input: 30 → Output: "NON indovinato!" (senza "Fuochino!")
/*
ES 58
Il numero segreto 37 è scritto nel codice.
Leggere il tentativo dell'utente e dire
"Indovinato!", altrimenti dire se il numero
è troppo alto o troppo basso, aggiungendo
"Fuochino" se la differenza è al massimo 3.
*/
#include <iostream>
using namespace std;
int main(){
int segreto = 37;
int numero;
cout << "Inserire un numero: ";
cin >> numero;
// CASO 1 indovinato
if (numero == segreto){
cout << "Indovinato!" << endl;
}
// CASO 2 non indovinato
else{
cout << "NON indovinato!" << endl;
/* CON abs --> Valore assoluto
if (abs(numero - segreto) <= 3)
cout << "Fuochino!" << endl;
*/
int differenza = numero - segreto;
if (differenza >= -3 && differenza <= 3)
cout << "Fuochino!" << endl;
// DA evitare i controlli sui singoli valori
// "hard-codati"
}
}