Как исправить «Программа завершена сигналом SIGFPE»

Вопрос в том :-

Учитывая целое число, для каждой цифры, которая составляет целое число, определите, является ли оно делителем. Подсчитайте количество делителей, встречающихся внутри целого числа.

Выполните функцию 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"

Что, если s равно нулю в if (n % s == 0)?

user4581301 22.12.2020 20:31

Чтобы добавить к наблюдению @user4581301, это должно произойти, если в n есть цифра 0 (например: 102, 120 и т. д.)

scohe001 22.12.2020 20:34

Спасибо @ user4581301

Samit Kapoor 22.12.2020 20:38

Пожалуйста, используйте заголовок, чтобы как можно более конкретно сообщить о характере вашей проблемы, а не «У меня есть ошибка».

tadman 22.12.2020 20:47
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
1 359
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
   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 в какой-то момент, поэтому вы сталкиваетесь с этими ошибками.

Другие вопросы по теме