Cand nu intelegi ceva la un algoritm, cel mai bine este sa il rulezi cu creionul pe hartie.
Ideea de baza a algoritmului e sa izolezi ultima cifra din numar, apoi sa shift-ezi numarul spre dreapta eliminand ultima cifra si repeat.
Apropo:
1. cred ca initializarea s=0 trebuie sa fie inainte lui while;
2. j nu are nici un rost;
3. pierzi ultima cifra.
Sa rulam:
n = 123
s = 0
Iteratia 1:
123 > 9: da
123!= 0: da
s = 0 + 123 % 10 (rest impartire intreaga) = 0 + 3 (ai izolat ultima cifra) = 3
n = 123 / 10 (impartire intreaga) = 12
Iteratia 2:
12 > 9: da
12!= 0: da
s = 3 + 12 % 10 (rest impartire intreaga) = 3 + 2 (ai izolat ultima cifra) = 5
n = 12 / 10 (impartire intreaga) = 1
Iteratia 3:
1 > 9: nu
n = 5 (e cam ciudat sa pui suma in n si oricum este gresit, pierzi ultima cifra)
Corectie, in loc de n = s folosim s = s + n:
s = 5 + 1 = 6 (daca pana acum ai calculat suma in s pare logic sa continui tot cu s si asa este corect, ai adunat si ultima cifra).
Programul tău nu e ok poate din cauza site-ului. Fă o captură și postează poza cu codul undeva, apoi mai vb
Acum e mai bine?
#include
#include
using namespace std;
int n, s, j;
int main()
{
cout > n;
j = n;
while (n>9)
{
s = 0;
while (n!= 0)
{
s = s + n % 10;
n = n / 10;
}
n = s;
}
cout
Nu, nu ai sa poti posta semnul mai mic aici
Cand nu intelegi ceva la un algoritm, cel mai bine este sa il rulezi cu creionul pe hartie.
Ideea de baza a algoritmului e sa izolezi ultima cifra din numar, apoi sa shift-ezi numarul spre dreapta eliminand ultima cifra si repeat.
Apropo:
1. cred ca initializarea s=0 trebuie sa fie inainte lui while;
2. j nu are nici un rost;
3. pierzi ultima cifra.
Sa rulam:
n = 123
s = 0
Iteratia 1:
123 > 9: da
123!= 0: da
s = 0 + 123 % 10 (rest impartire intreaga) = 0 + 3 (ai izolat ultima cifra) = 3
n = 123 / 10 (impartire intreaga) = 12
Iteratia 2:
12 > 9: da
12!= 0: da
s = 3 + 12 % 10 (rest impartire intreaga) = 3 + 2 (ai izolat ultima cifra) = 5
n = 12 / 10 (impartire intreaga) = 1
Iteratia 3:
1 > 9: nu
n = 5 (e cam ciudat sa pui suma in n si oricum este gresit, pierzi ultima cifra)
Corectie, in loc de n = s folosim s = s + n:
s = 5 + 1 = 6 (daca pana acum ai calculat suma in s pare logic sa continui tot cu s si asa este corect, ai adunat si ultima cifra).