Вопрос в том :-
Учитывая целое число, для каждой цифры, которая составляет целое число, определите, является ли оно делителем. Подсчитайте количество делителей, встречающихся внутри целого числа.
Выполните функцию findDigits
в редакторе ниже.
findDigits
имеет следующие параметры:
int n: значение для анализа
int findDigits(int n) {
vector<int> digits;
int temp = n;
int result = 0;
while(temp!=0){
digits.push_back(temp%10);
temp/=10;
}
for(int i=0 ; i<digits.size() ; i++){
int s = digits[i];
if (n % s == 0){
result ++;
}
}
return result;
}
Ошибка, которую я получил:
Reading symbols from Solution...done.
[New LWP 769213]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `./Solution'.
Program terminated with signal SIGFPE, Arithmetic exception.
#0 0x0000000000401433 in findDigits (n=1012) at Solution.cpp:16
16 if (n % s == 0){
To enable execution of this file add
add-auto-load-safe-path /usr/local/lib64/libstdc++.so.6.0.25-gdb.py
line to your configuration file "//.gdbinit".
To completely disable this security protection add
set auto-load safe-path /
line to your configuration file "//.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual. E.g., run from the shell:
info "(gdb)Auto-loading safe path"
Чтобы добавить к наблюдению @user4581301, это должно произойти, если в n
есть цифра 0 (например: 102, 120 и т. д.)
Спасибо @ user4581301
Пожалуйста, используйте заголовок, чтобы как можно более конкретно сообщить о характере вашей проблемы, а не «У меня есть ошибка».
int findDigits(int n) {
vector<int> digits;
int temp = n;
int result = 0;
while(temp!=0){
digits.push_back(temp%10);
temp/=10;
}
for(int i=0 ; i<digits.size() ; i++){
int s = digits[i];
if (n % s == 0 && s != 0)
result ++;
}
return result;
}
Это ошибка времени выполнения, значение s
могло быть 0
в какой-то момент, поэтому вы сталкиваетесь с этими ошибками.
Что, если
s
равно нулю вif (n % s == 0)
?