Sto iniziando a imparare C++ da solo e sono confuso con un compito che sto cercando di completare. L'utente digita i numeri naturali finché vuole finché non digita 0. Dopo di che il mio programma dovrebbe trovare la più grande somma di cifre che sono state digitate e stamparle. Stampa anche un numero da cui ha preso la somma. Ecco quello che ho cercato di fare:Dividere un numero intero e trovare la somma più grande 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;
}
quando sono in esecuzione il programma conta somma delle cifre da solo prima digitato in numero e smettere di lavorare. Quando prendo lo while (input > 0)
, fa un ciclo, ma non conta cifre. Sarò molto grato per l'aiuto e la spiegazione. P.S. Scusa per il mio inglese, non sono madrelingua.
Che cos'è un "digest sum"? – deviantfan
mi spiace, somma cifre –
Quando esci dal ciclo 'while (input> 0)', input == 0' (perché l'input = input/10; 'dell'ultima iterazione restituirà 0). Quindi, quando premi '} while (input);' la condizione è 'false' e ti interrompi dal ciclo esterno' do {..} while' dalla sua prima iterazione. Ecco perché ottieni solo l'iterazione '1'. – 865719