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

Daca mi poate explica si mie cineva algoritmul mai pe larg sechematizat ca sa l inteleg . Va rog muult de tot

Anexe:

Răspunsuri la întrebare

Răspuns de VxF
1

Știi cum funcționează împărțirea:

       \begin{array}{cccccccc}deimpartit&:&impartitor&=&cat&|&cat~intreg&rest\\9&:&4&=&2.5&|&2&1\end{array}

(rest = deîmpărțit - (împărțitor * cât întreg)  = 9 - (4 * 2) = 9 - 8 = 1)

Cum folosim numere în baza 10, la împărțirea cu 10 practic despicăm numărul în unități și restul numãrului:

       \begin{array}{cccccccc}deimpartit&:&impartitor&=&cat&|&cat~intreg&rest\\2468&:&10&=&246.8&|&246&8\end{array}

(rest = deîmpărțit - (împărțitor * cât întreg)  = 2468 - (10 * 246) = 2468 - 2460 = 8)

Asta este pusă în practică în blocul de instrucţiuni a buclei while:

s = s + n % 10;

  • Se extrage ultima cifră din n…
  • … care se adaugă direct la suma acumulată în s

n = n / 10;

  • Se extrag cifrele din n până la ordinul zecilor…
  • … care se asignează la n, ca să avansăm la următorul pas al parcurgerii cifrelor

Și bucla asta se termină când se termină cifrele din n, adică devine 0. Moment în are s conţine deja suma tuturor cifrelor.


greeneyes27: Tot nu intwlwg faza cu n=n/10
VxF: Să zicem că iniţial n = 2468. La prima trecere prin buclă se procesează ultima cifră, 8. La a doua trecere prin buclă ar trebui să se proceseze următoarea cifră, 6. Dar noi avem formulă simplă de acces numai pentru ultima cifră, penultima șamd. fiind mai complicate. Așa că eliminăm ultima (deja procesata) cifră 8, pentru ca 6 să devină ultimă cifră și să fie procesată cu aceeași formulă simplă.
Alte întrebări interesante