01
Selezione
Esercizi sugli if
Due gruppi di esercizi sulla selezione: il primo con condizioni semplici, il secondo con condizioni composte, if annidati e a cascata.
Soluzioni · If base
1 — Maggiorenne
if (eta >= 18) cout << "Sei maggiorenne";
else cout << "Sei minorenne";
2 — Promosso o rimandato
if (voto >= 6) cout << "Promosso";
else cout << "Rimandato";
3 — Pari o dispari
if (n % 2 == 0) cout << "pari";
else cout << "dispari";
4 — Il piu' grande
if (a > b) cout << a;
else if (b > a) cout << b;
else cout << "sono uguali";
5 — Segno del numero
if (n > 0) cout << "positivo";
else if (n < 0) cout << "negativo";
else cout << "zero";
6 — Sconto cassa
float totale = spesa;
if (spesa > 50) totale = spesa * 0.9;
cout << "Totale: " << totale;
7 — Accesso con PIN
if (pin == 1234) cout << "Accesso consentito";
else cout << "Accesso negato";
8 — Triangolo valido
if (a < b + c && b < a + c && c < a + b)
cout << "Triangolo valido";
else cout << "Non valido";
9 — Anno bisestile
if ((anno % 4 == 0 && anno % 100 != 0) || anno % 400 == 0)
cout << "Bisestile";
else cout << "Non bisestile";
10 — Saluto in base all'ora
if (ora < 12) cout << "Buongiorno";
else if (ora < 18) cout << "Buon pomeriggio";
else cout << "Buonasera";
Soluzioni · If avanzati
1 — Massimo tra tre
int m = a;
if (b > m) m = b;
if (c > m) m = c;
cout << m;
2 — Mini calcolatrice
if (op == '+') cout << a + b;
else if (op == '-') cout << a - b;
else if (op == '*') cout << a * b;
else if (op == '/') {
if (b != 0) cout << a / b;
else cout << "Divisione per zero!";
}
3 — Equazione di secondo grado
float d = b*b - 4*a*c;
if (d > 0) cout << "Due soluzioni";
else if (d == 0) cout << "Una soluzione";
else cout << "Nessuna soluzione reale";
4 — Indice di massa corporea
float bmi = peso / (altezza * altezza);
if (bmi < 18.5) cout << "Sottopeso";
else if (bmi < 25) cout << "Normopeso";
else if (bmi < 30) cout << "Sovrappeso";
else cout << "Obeso";
5 — Costo di spedizione
float costo;
if (peso <= 1) costo = 5;
else if (peso <= 5) costo = 8;
else costo = 12;
6 — Voto in lettere
if (p >= 90) cout << "A";
else if (p >= 80) cout << "B";
else if (p >= 70) cout << "C";
else if (p >= 60) cout << "D";
else cout << "F";
7 — Carta, forbice, sasso // 1=carta 2=forbice 3=sasso
if (g1 == g2) cout << "Pareggio";
else if ((g1==1 && g2==3) || (g1==2 && g2==1) || (g1==3 && g2==2))
cout << "Vince il giocatore 1";
else cout << "Vince il giocatore 2";
8 — Giorni del mese
if (mese == 2) {
bool bis = (anno%4==0 && anno%100!=0) || anno%400==0;
cout << (bis ? 29 : 28);
} else if (mese==4 || mese==6 || mese==9 || mese==11) cout << 30;
else cout << 31;
9 — Tariffa parcheggio
float costo = 0;
if (minuti > 60) {
int ore = (minuti - 60 + 59) / 60; // ogni ora iniziata
costo = 2 * ore;
}
10 — Medaglia della gara
if (t < 10) cout << "Oro";
else if (t <= 12) cout << "Argento";
else if (t <= 15) cout << "Bronzo";
else cout << "Nessuna medaglia";
02
Iterazione
Esercizi sui cicli
Due gruppi di esercizi sui cicli for, while e do–while: dalla pratica di base agli algoritmi classici.
Soluzioni · Cicli base
1 — Somma dei primi N
int somma = 0;
for (int i = 1; i <= N; i++) somma += i;
cout << somma;
2 — Conto alla rovescia
int i = N;
while (i >= 1) { cout << i << endl; i--; }
cout << "Via!";
3 — Tabellina
for (int i = 1; i <= 10; i++)
cout << n << " x " << i << " = " << n*i << endl;
4 — Media di tre voti
float media = (float)(a + b + c) / 3;
cout << media;
5 — Numeri pari
int somma = 0;
for (int i = 2; i <= N; i += 2) { cout << i << " "; somma += i; }
cout << endl << "Somma: " << somma;
6 — Somma fino allo zero
float x, somma = 0;
do { cin >> x; somma += x; } while (x != 0);
cout << somma;
7 — Parte intera e decimale
int intera = (int)x;
float decimale = x - intera;
cout << intera << " " << decimale;
8 — Positivi, negativi e zeri
int p=0, n=0, z=0, x;
for (int i = 0; i < N; i++) {
cin >> x;
if (x > 0) p++; else if (x < 0) n++; else z++;
}
9 — Potenza con il ciclo
int ris = 1;
for (int i = 0; i < esponente; i++) ris *= base;
cout << ris;
10 — Percentuale di promossi
float perc = (float)promossi / totale * 100;
cout << perc << "%";
Soluzioni · Cicli avanzati
1 — Fattoriale
long f = 1;
for (int i = 2; i <= N; i++) f *= i;
cout << f;
2 — Fibonacci
int a = 0, b = 1;
for (int i = 0; i < N; i++) {
cout << a << " ";
int t = a + b; a = b; b = t;
}
3 — E' primo?
bool primo = (n >= 2);
for (int i = 2; i < n; i++)
if (n % i == 0) { primo = false; break; }
4 — Somma delle cifre
int s = 0;
while (n > 0) { s += n % 10; n /= 10; }
cout << s;
5 — Numero al contrario
while (n > 0) { cout << n % 10; n /= 10; }
6 — Tavola pitagorica
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) cout << i*j << "\t";
cout << endl;
}
7 — MCD (Euclide)
while (b != 0) { int r = a % b; a = b; b = r; }
cout << a;
8 — Conta i divisori
int c = 0;
for (int i = 1; i <= n; i++) if (n % i == 0) c++;
9 — Triangolo di asterischi
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= i; j++) cout << "*";
cout << endl;
}
10 — Indovina il numero // srand(time(0)); + <cstdlib> <ctime>
int segreto = rand() % 100 + 1, g;
do {
cin >> g;
if (g > segreto) cout << "Troppo alto";
else if (g < segreto) cout << "Troppo basso";
} while (g != segreto);
cout << "Indovinato!";