C/C++

C++ По условию не верно считат. Подскажите где ошибка.

Найти произведение цифр заданного натурального числа (количество цифр – произвольное).
#include <iostream>

#include <conio.h>
using namespace std;
int main(){
int N, S = 0;
cout<<"Input N";
cin>>N;
while(N!=0){
S+=N%10;
N=N/10;
}
cout<<S;
getch();
return 0;
}
Vasilij Kogut
Vasilij Kogut
212
Произведение подразумевает умножение, а не сложение:
#include <iostream>

#include <conio.h>
using namespace std;
int main(){
unsigned N;
long long S = 1;
cout<<"Input N";
cin>>N;
while(N!=0){
S*=N%10;
N=N/10;
}
cout<<S;
getch();
return 0;
}
НА
Нуржигит Абдикаримов
54 766
Лучший ответ
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
cout << "n: ";
unsigned n;
cin >> n;
auto m = 1U;
do m *= n % 10; while (n /= 10);
cout << "m: " << m << '\n';
system("pause > nul");
}
Сергей Сёмин
Сергей Сёмин
88 956
Если количество цифр в натуральном числе -произвольное, тогда вместо типа int лучше работать с типом беззнаковых целых любой длины или по крайней мере с восьмибайтным беззнаковым целым типом unsigned long long, в котором можно выражать, например, двадцатизначные числа, а не максимум до пары с небольшим миллиардов и всё как четырёхбайтным знаковым типом int. Некоторые конструкции выглядят очень странно -вот так писать довольно таки глупо:
cout << "Input N"; cin >> N; (приглашение на ввод лучше отделять от вводимых данных хотя бы пробелом, чтобы при вводе одна строчка символов не наползала на другую)
while (N!=0) (Кто ж так пишет? Надо писать просто while (N) -так же компактнее, лучше и логичнее, не так ли? Сами подумайте! Ведь while (N) -это то же самое! И как раз на таких вот плюхах сразу виднА полная некомпетентность всех авторов таких не вполне адекватных элементов кода)
N=N/10 (Так писАть можно, но лучше всегда записывать N/=10, что компактнее).
А принципиальная ошибка у Вас одна -находится сложение вместо умножения. Исправить её можно как-нибудь так:
#include <iostream>
using namespace std; int main()
{ unsigned long long N, p = 1;
cout << "Input N: "; cin >> N; while (N)
{ p *= N % 10; N /= 10; } cout << p << endl;
cin.get(); cin.get(); return 0; }
ДБ
Дима Богачёв
66 572
Сергей Полосин На числе 0 - выдает неверный ответ :)