Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
1 / 1 / 0
Регистрация: 09.12.2015
Сообщений: 42

Обработать исключительную ситуацию деления на нуль

17.05.2016, 19:18. Показов 6747. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать программу с обработкой исключительной ситуации деления на нуль, пожалуйста. Вот тут что то есть, или это не то? Я что то совсем не шарю(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
double f(double x) { 
 
if (что-то) throw std::string("Division by zero"); 
} 
 
main: 
try { 
 
y=f(x); 
 
} catch(std::string o) { 
std::cout « o « '\n'; 
}
13.05.16    
#include <iostream> 
using namespace std; 
int main() { 
int a = 0, b = 10; 
try { 
cout « b / a « endl; 
} 
catch (...) 
{ 
cout « "error"; 
} 
cin.get(); 
return 0; 
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.05.2016, 19:18
Ответы с готовыми решениями:

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

SEH; функция-фильтр необработанных исключений устраняет исключительную ситуацию, но почему-то вызывается постоянно
Ну то есть цель: должна сделать так, чтобы исключительная ситуация больше не возникала и возвратить EXCEPTION_CONTINUE_EXECUTION. Отсюда...

Обработать исключительную ситуацию
Задание обработать искл. ситуацию.... вот моя программа : unit Unit1; interface uses Windows, Messages, SysUtils, Variants,...

8
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
17.05.2016, 20:15
Ты его не поймаешь как исключение. Просто проверяй знаменатель перед делением.
1
Заблокирован
17.05.2016, 20:55
Лучший ответ Сообщение было отмечено Archus как решение

Решение

Archus,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <signal.h>
#include <memory>
#include <iostream>
using namespace std;
 
int main() {
    std::shared_ptr<void(int)> handler(
        signal(SIGFPE, [](int signum) {throw std::logic_error("FPE"); }),
        [](__sighandler_t f) { signal(SIGFPE, f); });
 
    int i = 0;
 
    cin >> i;  // what if someone enters zero?
 
    try {
        i = 1/i;
    }
    catch (std::logic_error e) {
        std::cerr << e.what();
    }
}
http://ideone.com/PkTiXo
terminate called after throwing an instance of 'std::logic_error'
what(): FPE
А вот реальный код из под Win
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <Windows.h>
#include <exception>
#include <iostream>
using namespace std;
 
int main()
{
    int i = 0;
    __try
    {
        i = 1 / i;
    }
    __except(EXCEPTION_EXECUTE_HANDLER)
    {
        cout<<"Executing SEH __except block\r\n";
    }
 
    return 0;
}
Executing SEH __except block
Press any key to continue
для работы не забыть выставить use SEH в свойствах проекта
1
 Аватар для Vort_
200 / 200 / 78
Регистрация: 10.07.2012
Сообщений: 409
17.05.2016, 21:17
Вот мой вариант под Windows:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <float.h>
#include <windows.h>
 
using namespace std;
 
void main()
{
    _clearfp();
    _controlfp(_controlfp(0, 0) & ~_EM_ZERODIVIDE, _MCW_EM);
 
    __try
    {
        volatile double a = 10.0;
        volatile double b = 0.0;
        volatile double c = a / b;
    }
    __except (
        (GetExceptionCode() == EXCEPTION_FLT_DIVIDE_BY_ZERO ||
        GetExceptionCode() == STATUS_FLOAT_MULTIPLE_TRAPS) ?
        EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
    {
        cout << "Float division by zero" << endl;
    }
 
    __try
    {
        volatile int a = 10;
        volatile int b = 0;
        volatile int c = a / b;
    }
    __except (
        GetExceptionCode() == EXCEPTION_INT_DIVIDE_BY_ZERO ?
        EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
    {
        cout << "Integer division by zero" << endl;
    }
}
1
1 / 1 / 0
Регистрация: 09.12.2015
Сообщений: 42
17.05.2016, 21:22  [ТС]
Unknownx, Так это я в интернете нашла, а там через классы вроде как надо, вот и не могу(
0
Заблокирован
17.05.2016, 21:33
Цитата Сообщение от Archus Посмотреть сообщение
Unknownx, Так это я в интернете нашла, а там через классы вроде как надо, вот и не могу(
- под вин используй этот код(он совсем не из интернета а мой собственный)
Цитата Сообщение от Unknownx Посмотреть сообщение
#include <Windows.h>
#include <exception>
#include <iostream>
using namespace std;
int main()
{
* * int i = 0;
* * __try
* * {
* * * * i = 1 / i;
* * }
* * __except(EXCEPTION_EXECUTE_HANDLER)
* * {
* * * * cout<<"Executing SEH __except block\r\n";
* * }
return 0;
}
- он тебе не только деление на ноль отловит, на счёт классов не понял, что где надо с классами?

Инфу по SEH можно почерпнуть из этой странички букваря https://msdn.microsoft.com/en-... zty51.aspx
0
1 / 1 / 0
Регистрация: 09.12.2015
Сообщений: 42
17.05.2016, 21:37  [ТС]
Unknownx, Как я поняла, просто классы использовать
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
17.05.2016, 21:38
Unknownx, ну это же нестандартные возможности.
0
Заблокирован
17.05.2016, 21:41
Цитата Сообщение от Archus Посмотреть сообщение
Unknownx, Как я поняла, просто классы использовать
можно увидеть конкретное задание?

Добавлено через 38 секунд
Цитата Сообщение от nmcf Посмотреть сообщение
Unknownx, ну это же нестандартные возможности.
- согласен platform specific for Win
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.05.2016, 21:41
Помогаю со студенческими работами здесь

Обработать исключительную ситуацию
Нужно обработать исключительную ситуацию деления на 0 выводящее сообщение на экран .386p ; ђ*§аҐиҐ*ЁҐ ва**б«пжЁЁ ; ўбҐе...

Обработать ситуацию деления на ноль
необходимо обработать ситуацию 1/0, как можно в прологе получить в качестве ответа знак бесконечности? Символом не подойдет, именно как...

В программе надо обработать ситуацию деления на ноль.
Возникла проблема при написании обычного калькулятора.Нужно,что бы при деление на 0 выскакивала ошибка,в итоге намудрил что и при умножении...

Нужно добавить исключительную ситуацию
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,...

В одномерном массиве подсчитать сумму элементов массива. Предусмотреть исключительную ситуацию, если все элементы массива равны 0
сумму я подсчитала, а как вставить исключителную ситуацию?? interface uses Windows, Messages, SysUtils, Variants, Classes,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru