Să considerăm următoarea problemă: “Se citesc trei numere naturale. Să se determine suma lor.” Desigur, este o problemă banală, dar haideți să o analizăm și să vedem mai multe soluții!
Soluția 1
Folosim trei variabile: a, b, c. Le citim și afișăm suma lor.
#include <iostream>
using namespace std;
int main()
{
int a, b, c;
cin >> a >> b >> c;
cout << a + b + c;
return 0;
}
Soluția 2
Această soluție este asemănătoare cu cea anterioară, dar calculăm suma valorilor într-o variabilă suplimentară.
#include <iostream>
using namespace std;
int main()
{
int a, b, c, S;
cin >> a >> b >> c;
S = a + b + c;
cout << S;
return 0;
}
Soluția 3
Vom calcula suma valorilor pe rând. Atenție la inițializarea lui S cu 0!!!
#include <iostream>
using namespace std;
int main()
{
int a, b, c, S;
S = 0;
cin >> a >> b >> c;
S = S + a;
S = S + b;
S = S + c;
cout << S;
return 0;
}
Soluția 4
Observăm că după ce adunăm la S valoarea unei variabile, nu o mai folosim. Putem astfel să folosim o singură variabilă în care să citim de trei ori câte un număr și, după fiecare citire, să adunăm la S valoarea curentă a variabilei.
#include <iostream>
using namespace std;
int main()
{
int a, S;
S = 0;
cin >> a;
S = S + a;
cin >> a;
S = S + a;
cin >> a;
S = S + a;
cout << S;
return 0;
}
Soluția 5
Observă că în soluția anterioară am scris de trei ori aceleași instrucțiuni: cin >> a; S = S + a;. Trebuie înțeles că ele s-au executat de trei ori, dar valorile pe care le aveau variabilele s și S la fiecare pas erau diferite.
Aici intervin structurile repetitive: În loc să scriem de trei ori aceleași instrucțiuni, le vom scrie o singură dată, dar vom cere să fie executate de trei ori!. De exemplu putem folosi instrucțiunea while:
#include <iostream>
using namespace std;
int main()
{
int a, S;
S = 0;
int i = 1;
while(i <= 3)
{
cin >> a;
S = S + a;
i++;
}
cout << S;
return 0;
}
O altă soluție, folosind instrucțiunea for:
#include <iostream>
using namespace std;
int main()
{
int a, S;
S = 0;
for(int i = 1 ; i <= 3 ; i ++)
{
cin >> a;
S = S + a;
}
cout << S;
return 0;
}