Простая программа, которая считает и суммирует цифры. Как я могу заставить это работать?

Поэтому я должен написать простую программу (которая зацикливается), в которой вы можете ввести целое число, и оно извергает число и сумму чисел. Поскольку я настолько отсталый, когда дело доходит до программирования, я просто собрал код в сети и попытался собрать его воедино. Я думаю, что сумма блока винты с п, но я не совсем уверен. В любом случае, я был бы очень признателен, если бы кто-то мог указать на ошибки и показать мне, как я могу заставить это работать.

#include <iostream>
using namespace std;

int main()
{
    while(1)
    {
        int i,p,n,sum=0;  //sum block
        cout<<"enter an int: ";
        cin>>n;

        {
            while(n!=0)
            {
                p=n % 10;
                sum+=p;
                n=n/10;
            }
            cout<<"int digit sum: "<<sum <<endl;
        }
        {
            int count = 0;
            while(n)
            {
                n /= 10;
                ++count;
            }
            cout <<"number of digits: " << count << '\n';
        }
    }
}

4 ответа

Решение

Поскольку используемые вами циклы разрушительны (т.е. n к нулю до конца цикла) нужно объединить два цикла в один:

int sum=0, count=0;
while(n!=0)
{
    count++;
    sum += n%10;
    n /= 10;
}

Используйте этот код, если вы пытаетесь получить сумму цифр и нет. цифр в номере.

#include <iostream>
using namespace std;

int main()
{

    int i, p, n, sum=0, count = 0;  //sum block
    cout<<"enter an int: ";
    cin>>n;

    while(n!=0)
    {
        p=n % 10;
        sum+=p;
        count++;
        n=n/10;
    }

    cout<<"int digit sum: "<<sum<<endl;
    cout<<"count of digits: "<<count<<endl;
 }

Ваш второй цикл while(n) никогда не будет выполняться как значение n до тех пор стал бы 0.

Вам нужно сохранить копию n перед первым циклом, чтобы использовать ее во втором цикле.

Я думаю, что сумма блока винты с п, но я не совсем уверен,

ты угадаешь правильно: ты меняешь n внутри этого первого вложенного цикла. Вы не выходите из этого цикла, пока n это ноль... так что теперь это ноль!

Для справки, я бы, вероятно, структурировал это так, чтобы избежать необходимости сохранять явную копию...

#include <iostream>
using namespace std;

int sum_of_digits(int n);
int num_of_digits(int n);

int main()
{
    while(1)
    {
        cout << "enter an int: ";
        int n;
        cin >> n;

        cout << "sum of digits: " << sum_of_digits(n) << endl;
        cout << "num of digits: " << num_of_digits(n) << endl;
    }
}

int sum_of_digits(int n)
{
    int sum = 0;
    while(n)
    {
        sum += n % 10;
        n /= 10;
    }
    return sum;
}

int num_of_digits(int n)
{
    int count = 0;
    while(n)
    {
        ++count;
        n /= 10;
    }
}
Другие вопросы по тегам