Structuri repetitive - introducere


Editat de Candale Silviu (silviu) la data 2019-10-08

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!

Versiunea Blockly

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;
}


Fișiere atașate


Editat de Candale Silviu (silviu) la data 2019-10-08