Итоги: Безопасное деление
Часть раздела Логика и управление потоком путешествия по C++ на Coddy — урок 53 из 56.
Задание
ЛегкоСоздайте программу, которая реализует безопасное деление с использованием комплексной обработки исключений. Эта задача проверит вашу способность сочетать проектирование функций с управлением исключениями для корректной обработки ошибок деления на ноль.
Будут предоставлены следующие входные данные:
- Число типа double
numerator, представляющее делимое - Число типа double
denominator, представляющее делитель
Ваша программа должна:
- Создать функцию с именем
safeDivide, которая принимает два параметра типа double (numerator и denominator) - Внутри функции проверить, равен ли знаменатель нулю
- Если знаменатель равен нулю, выполнить
throwстроки"Division by zero error" - Если знаменатель не равен нулю, вычислить результат деления и вернуть его как double
- В функции main вызвать
safeDivideвнутри блокаtryс входными значениями - Использовать блок
catchдля обработки выброшенного строкового исключения - Вывести соответствующее сообщение в зависимости от того, успешно ли прошло деление или произошла ошибка
Используйте следующий точный формат вывода:
Для успешного деления:
Result: [division_result]Для ошибки деления на ноль:
Error: Division by zero errorПомните, что если знаменатель равен нулю, ваша функция должна немедленно выполнить throw исключения перед попыткой деления. Блок catch должен указывать тип const char* для обработки выброшенного строкового литерала. Когда выбрасывается исключение, программа переходит непосредственно от оператора throw к соответствующему блоку catch, предотвращая выполнение деления на ноль и позволяя вашей программе корректно обработать ошибку вместо аварийного завершения.
Попробуйте сами
#include <iostream>
using namespace std;
int main() {
// Чтение входных данных
double numerator, denominator;
cin >> numerator >> denominator;
// TODO: Напишите свой код здесь
// Создайте функцию safeDivide выше main()
// Используйте блок try-catch для обработки исключений
return 0;
}Все уроки раздела Логика и управление потоком
1Указатели и память
Что такое указатель?Оператор взятия адресаОператор разыменованияНулевые указателиУказатели и массивыДинамическая память и 'new'Освобождение памяти и 'delete'Итоги: Практика с указателями2Векторы (динамические массивы)
Знакомство с std::vectorСоздание вектораДобавление элементовДоступ к элементамРазмер вектораИтерация с помощью цикла ForRange-based цикл ForУдаление элементовИтоги: операции с векторами5Проект: Инструмент инвентаризации
Настройка проектаДобавление и обновление товаров8Основы обработки ошибок
Введение в исключенияБлоки 'try' и 'catch'Ключевое слово 'throw'Различные типы исключенийУниверсальный обработчикИтоги: Безопасное деление