Informatică, întrebare adresată de larisa633, 8 ani în urmă

Poate cineva sa imi explice ce face codul?​

Anexe:

andrei750238: Sincer nu face nimic util practic si e extrem de greu de explicat.
andrei750238: Pentru fiecare cifra se pastreaza prima cifra si apoi se adauga cate o cifra de 0-uri la finalul acestei cifre si se adauga la fiecare pas intr-o suma care se afiseaza la final.
andrei750238: De exemplu daca citim 125 6321 2365 (unde 125 e pozitia 1, 6321 e pozitia 2, 2365 e pozitia 3).

Atunci o sa avem s = (1) + (6 + 60) + (2 + 20 + 200)
andrei750238: La ce ti-ar trebui asa ceva nu am idee dar ok.
larisa633: multumesc!

Răspunsuri la întrebare

Răspuns de mariusmihit10
1

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.


mariusmihit10: Daca ai intrebari sa imi spui
larisa633: multumesc!
mariusmihit10: cp
Alte întrebări interesante