Zaczynam samodzielnie uczyć się C++ i jestem zdezorientowany jednym zadaniem, które próbuję ukończyć. Użytkownik shoud wpisuje liczby naturalne tak długo, jak chce, dopóki nie wpisze 0. Następnie mój program powinien znaleźć największą sumę cyfr, które zostały wpisane i wydrukować. Powinien również wydrukować numer, z którego pochodziła suma. Oto co próbowałem zrobić:Dzielenie liczby całkowitej i znajdowanie największej sumy C++
#include <iostream>
#include <string>
using namespace std;
int main()
{
int input = 0;
int digit;
int sum = 0;
int largest = 0;
do
{
cout << "enter a natural number (0 if done): " << flush;
cin >> input;
while (input > 0)
{
digit = input % 10;
sum = sum + digit;
input = input/10;
}
if (sum > largest)
largest = sum;
} while (input);
cout << "Max sum of digits was " << largest << "for" << endl;
}
Kiedy biegnę programm liczy sumę cyfr z tylko pierwszy wpisany numer i przestać działać. Oddalając while (input > 0)
tworzy pętlę, ale nie liczy cyfr. Będę bardzo wdzięczny za pomoc i wyjaśnienia. P.S. Przepraszam za mój angielski, nie jestem native speakerem.
Co to jest "podsumowana suma"? – deviantfan
Przepraszam, cyfry sum –
Po wyjściu z pętli 'while (input> 0)' 'input == 0' (ponieważ' input = input/10; 'z ostatniej iteracji zwróci 0). Dlatego, gdy naciśniesz '} while (input);" warunek to "false", a ty przerwiesz od zewnętrznej pętli 'do {..} while' z pierwszej iteracji. Dlatego dostajesz tylko iterację '1'. – 865719