Pętla działa dopóki liczba jest większa od 0 (dlaczego, do tego przejdziemy zaraz)
dzielenie liczby całkowitej w C++ odrzuca część ułamkową, czyli
int i = 123;
i / 10 == 12 (powinno być 12.3, ale odrzucamy część ułamkową, pracujemy z liczbami całkowitymi)
z kolei modulo z liczby zwraca resztę z dzielenia całkowitego, czyli:
int i = 20;
i % 6 == 2 (tak, bo 20/6 = 3 [zmieścimy 18] i 2 reszty)
jednak jest taka fajna właściwość, że jeśli mamy liczbę w systemie X i zrobimy modulo X, to dostaniemy ostatnią cyfrę:
int i = 123;
i % 10 == 3 (tak, bo zmieścimy 120, 3 reszty)
no więc mamy zadeklarowaną pewwną zmienną wynik, do której będziemy zapisywać sumę cyfr i wygląda to tak:
while (liczba > 0) // dopóki liczba jest większa od 0
{
wynik += liczba%10; // dodaj do zmiennej wynik ostatnią cyfrę
liczba /= 10; // podziel liczbę całkowicie przez 10
}
dla liczby 123 wygląda to następująco:
liczba = 123
wynik += liczba%10 // 3
liczba /= 10 // 12
wynik += liczba%10 // 2
liczba /= 10 // 1
wynik += liczba%10 // 1
liczba /= 10 // 0, bo zostało nam 1, 1/10 to 0.1, ale odrzucamy część ułamkową