C/C++

Что не так с программой?


Пытаюсь сделать так, чтобы при попытке деления на ноль выводилось сообщение "На ноль делить нельзя", но выдает ошибку. Учил раньше питон, не понимаю я этих ваших си плюс плюсов
У тебя сначала выполняется деление при задании переменной, а потом проверка на равенство нулю.
Abraham Lincoln
Abraham Lincoln
84 117
Лучший ответ
 #include  
#include
#include
using namespace std;
float input(const char* msg) {
float value = 0.0F;
while (true) {
try {
cout > tmp;
value = stof(tmp);
break;
} catch (...) {
cin.clear();
cin.ignore(cin.rdbuf()->in_avail());
puts("Ошибка, повторите ввод...");
}
}
return value;
}
int main() {
system("chcp 1251 > nul");
const auto min = -numeric_limits::max();
const auto max = numeric_limits::max();
vector errors = {
"Ошибка: значение суммы больше допустимого предела",
"Ошибка: значение суммы меньше допустимого предела",
"Ошибка: значение разности больше допустимого предела",
"Ошибка: значение разности меньше допустимого предела",
"Ошибка: значение произведения больше допустимого предела",
"Ошибка: значение произведения меньше допустимого предела",
"Ошибка: деление на ноль",
"Ошибка: значение частного больше допустимого предела",
"Ошибка: значение частного меньше допустимого предела",
};
auto a = input("a: ");
auto b = input("b: ");
try {
auto sum = double(a) + double(b);
if (sum > max) throw exception(errors.at(0));
if (sum < min) throw exception(errors.at(1));
cout
GH
Gabriel Henks
62 183
Try...catch при делении на ноль не срабатывает
Это один из косяков C++
Всё потому, что консольное приложение на самом деле имитируется графической библиотекой.
А в реальном консольном приложениее try...catch сработает. Например, в консоли ОС Linux он работает.
Но всё равно нужно подправить твой текст. Деление на ноль перенести в try..catch.