Nie rozumiem kodu - proszę o wyjaśnienie (operatory dzielenia i pętle)

0
while (liczba > 0) {
    wynik += liczba % 10;
    liczba /= 10;
}

z tym fragmentem mam problem.

Caly kod:

#include <iostream>
using namespace std;

int main()
{
    int liczba, wynik = 0;
    cout << "Podaj liczbe: ";
    cin >> liczba;

    while (liczba > 0) {
        wynik += liczba % 10;
        liczba /= 10;
    }
    cout << "Suma cyfr podanej liczby wynosi: " << wynik << endl;
    return 0;
}
0

Skoro program mi zaakceptowal taki tytuł to w moim mniemaniu był okej (czy nie tak?).

1

Opis podstawowych operatorów powinien znajdować się w każdej książce czy kursie. /= dzieli lewą stronę przez prawą stronę i przypisuje wynik do lewej strony, czyli liczba /= 10 oznacza (prawie) to samo co liczba = liczba / 10. Operator % to operator reszty z dzielenia.

2

Ok, bierzesz liczbę. np. 231.

W pętli:
wynik += 231 % 10; czyli wynik += 1 bo 231 podzielone modulo przez 10 daje 1
liczba = 231 / 10; czyli liczba = 23. Jeżeli dzielisz inta przez inta, w rezultacie dostajesz kolejnego inta, czyli tracisz informację o liczbie dziesiętnej.
wynik += 23 % 10; czyli wynik += 3
itd.
I tak robisz aż do momentu gdy
wynik = 2 / 10; czyli 0 => wychodzisz z pętli

1 użytkowników online, w tym zalogowanych: 0, gości: 1