Poate cineva sa imi explice ce face codul?
Atunci o sa avem s = (1) + (6 + 60) + (2 + 20 + 200)
Răspunsuri la întrebare
Răspuns:
#include <iostream> // se include biblioteca iostream
using namespace std; // pentru functiile de tip std (standard), cin, cout...
int main() // functia principala a programului
{
int n, x, s = 0, i, j; // declaram variabilele de tip intreg si in acelas timp initializam pe s cu 0, adica porneste de la 0
cin >> n; // citim pe n, care este nr de termeni
for (i = 1; i <= n; i++) // o bucla for care porneste de la 1 pana la n
{
cin >> x; // citim de la tastatura pe x
while (x > 9) // cat timp x > 9
{
x /= 10; // x primeste valoarea x/10
}
for (j = 1; j <= i - 1; j++) // bucla for ruleaza de la 1 la i-1
{
x *= 10; // x primeste valoarea x*10
s = s + x; // adunam nr x la suma s
}
}
cout << "s= " << s; // afisam suma s
return 0; // sfarsitul programului
}
Explicație: Am rescris programul tau, adaugand biblioteca, functia principala si cea de tip standard cu explicatii minore la fiecare linie.
Mai departe vr sa explic cu mai mult detaliu ce fac unele linii de cod care mi se par mie mai dificil de inteles.
Programul tau calculeaza suma primilor n termeni dintr-o secventa.
Primul for incepe contine o variabila declarata mai devreme care porneste de la 1, cu o conditie care spune atata timp cat i este mai mic sau egal cu n (adica nr introdus), i creste cu +1. Acest for practic ne ajuta sa citim n termeni, adica daca introduci de la tastatura pe n = 2, atunci acest for vede ca, conditia se respecta si i creste cu +1 (adica se adauga un termen in plus), si la urmatoarea iteratie, i va fi 2 cea ce este din nou corect si din nou creste cu +1 (adica avem 2 termeni). Dupa asta, i va fi 3 si conditia nu mai este respectata si se termina bucla. Mai departe, avem 2 termeni x, care introduci de la tastatura. De asemenea, aceasta bucla for ne serveste la extragerea cifrei din pozitia unitatilor prin intermediul instructiunii while (x>9), cu x care primeste valoarea x/10. Din cauza ca noi avem variabile de tip intreg, partea fractionara este ignorata, adica nu se afiseaza. De ex. daca avem x=21, el va fi 2,1 deci se afiseaza doar 2, daca ar fi fost float, s-ar fi afisat 2,1 adica si ce ii dupa virgula.
Al doilea for contine din nou o variabila j care din nou porneste de la 1, cu o conditie care ne spune ca atata timp cat j este mai mic egal cu i-1 (i este indexul curent al nr x), j creste cu +1. Practic, in acest for, numarul x este inmultit cu 10^j (la fiecare iteratie a buclei, numarul x este inmultit cu 10, ridicandu-l astfel la puterea j.) si adunat la suma s. Acest for e extrem de necesar pentru a crea suma s.