In questa lezione svilupperemo alcuni esempi di algoritmi proposti alle olimpiadi di problem solving per la scuola superiore di primo grado in linguaggio C++.
Problem solving – primo esempio
Consideriamo dunque questo programma scritto in pseudolinguaggio:
procedure ALFA;
variables A, B, K, K1, H integer;
A ← 2;
K ← 7;
input B;
H ← A + K + B;
K1 ← A + B;
B ← A + H + K1;
output H, B, K1;
endprocedure;
Il valore di input per B è 10, determinare dunque i valori di output per H, B e K1.
Risoluzione del problema
Calcoliamo i vari passaggi:
A ← 2; A=2
K ← 7; K=7
input B; B=10 //inseriamo il valore richiesto dal problema
H ← A + K + B; H=2+7+10=19
K1 ← A + B; K1=2+10=12
B ← A + H + K1; B=2+19+12=33
Quindi i valori visualizzati in output sono:
H=19; K1=12; B=33
Adesso risolviamo questo algoritmo in C++.
L’algoritmo è molto semplice da realizzare, infatti si tratta di una struttura sequenziale che non ricorre a nessuna istruzione condizionale o iterativa.
#include <iostream>
using namespace std;
int main() {
int A, K, K1, B, H;
A = 2;
K = 7;
cout << "Inserisci B, metti 10 per provare l'esempio specifico: ";
cin >> B;
H = A + K + B;
K1 = A + B;
B = A + H + K1;
cout << "H vale: " << H << endl;
cout << "B vale: " << B << endl;
cout << "K1 vale: " << K1 << endl;
return 0;
}
Quindi compilate ed eseguite, l’output sarà proprio quello che abbiamo specificato nell’esempio sopra.
Problem solving – Secondo esempio
Consideriamo adesso questo programma scritto in pseudolinguaggio:
procedure BETA;
variables A, B, C, M, N integer;
input A, B, C;
M ← A;
N ← A;
if B > M
then M ← B;
else N ← B;
endif;
if C > M
then M ← C;
else N ← C;
endif;
output M, N;
endprocedure;
I valori di input per A, B e C sono rispettivamente 15, 21, 19. Determinare dunque i valori di output per M e N.
Risoluzione
input A, B, C; Inseriamo A=15, B=21, C=19
M ← A; M=15;
N ← A; N=15;
if B > M si ha quindi 21>15 vero
then M ← B; allora M=21;
else N ← B; //chiaramente non viene eseguita questa istruzione
endif;
if C > M si ha quindi 19>21 falso
then M ← C; //questa istruzione non viene eseguita
else N ← C; N=19
endif;
output M, N; visualizza in output 21,19
Adesso implementiamo l’algoritmo in C++. Stavolta occorrono le istruzioni condizionali, ma la struttura è molto semplice.
#include <iostream>
using namespace std;
void beta() {
int A, B, C, M, N;
cout << "Inserisci A: ";
cin >> A;
cout << "Inserisci B: ";
cin >> B;
cout << "Inserisci C: ";
cin >> C;
M = A;
N = A;
if (B > M)
M = B;
else
N = B;
if (C > M)
M = C;
else
N = C;
cout << "M: " << M << endl;
cout << "N: " << N << endl;
}
int main() {
beta(); // Chiamata alla procedura beta
return 0;
}
Questi sono solo alcuni esempi di problem solving proposti alle olimpiadi nella scuola secondaria di primo grado.
Alcuni link utili
Indice argomenti linguaggio C++
1- Introduzione al linguaggio C++
3- Operatori di assegnazione in C++
Successione di Fibonacci in C++
Alcuni tutorial in C
Somma elementi diagonale principale di una matrice
Sommare elementi della cornice esterna di una matrice in C
Sommare dei numeri di una matrice in C
Come ricercare gli elementi in una matrice in C
Inserire dati in una matrice in C