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;

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;

main() {
	int A, B, C, M, N;
	
	cout<<"Inserisci A, metti 15: ";
	cin>>A;
	cout<<"Inserisci B, metti 21: ";
	cin>>B;
	cout<<"Inserisci C, metti 19: ";
	cin>>C;
	
	M=A;
	N=A;
	
	if(B>M)
		M=B;
	else
		N=B;
	
	if (C>M)
    	        M=C;
	else 
		N=C;
	
	cout<<"M vale: "<<M<<endl;
	cout<<"N vale: "<<N<<endl;

	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++

2- Variabili in C++

3- Operatori di assegnazione in C++

4- Esempi in C++

5- Casting 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

Somma di due matrici in C

Sommare dei numeri di una matrice in C

Prodotto tra matrici in C

Come ricercare gli elementi in una matrice in C

Inserire dati in una matrice in C

Tavola pitagorica in C