Поэтому я должен написать простую программу (которая зацикливается), в которой вы можете ввести целое число, и оно извергает число и сумму чисел. Поскольку я настолько отсталый, когда дело доходит до программирования, я просто собрал код в сети и попытался собрать его воедино. Я думаю, что сумма блока винты с п, но я не совсем уверен. В любом случае, я был бы очень признателен, если бы кто-то мог указать на ошибки и показать, как я могу заставить это работать.
#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';
}
}
}
Поскольку используемые вами петли разрушительный (то есть они делают n
к нулю до конца цикла) нужно объединить два цикла в один:
int sum=0, count=0;
while(n!=0)
{
count++;
sum += n%10;
n /= 10;
}
Вам нужно сохранить копию n перед первым циклом, чтобы использовать ее во втором цикле.
Используйте этот код, если вы пытаетесь получить сумму цифр и нет. цифр в номере.
#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
это ноль … так что теперь это ноль!
Для справки, я бы, вероятно, структурировал это так, чтобы избежать необходимости сохранять явную копию …
#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;
}
}