У меня проблемы с упражнением 9 из главы 5 «Принципы и практика программирования Бьярна Страуструпа с использованием C ++».
Глава посвящена ошибкам, и в упражнении говорится: «Измените программу из упражнения 8, чтобы вывести ошибку, если результат не может быть представлен как int».
Я пытался использовать различные варианты
if (!cin)
error("Input is not an integer");
Однако проблема, с которой я столкнулся, заключается в том, что если я читаю что-то, не являющееся целым числом, оно либо отображает все ошибки, либо только Ошибка «Вы хотели сложить больше значений, чем вы ввели».
Это мой полный код из упражнения 8, прежде чем я попытался добавить ошибку ввода пользователя:
#include <iostream>
#include "../../std_lib_facilities.h"
int main()
{
try {
int size = 0;
int numbers = 0;
int sum = 0;
vector<int>values;
cout << "Please enter how many numbers you want to sum\n";
cin >> size;
if (size < 1)
error("you have to enter at least one value!");
cout << "enter some integers and then | to sum them\n";
while (cin >> numbers)
values.push_back(numbers);
if (values.size() < size)
error(" You wanted to sum more values than you entered. ");
cout << "the sum of the first " << size << " numbers ( ";
for (int i = 0; i < size; ++i) {
sum += values[i];
cout << values[i] << " ";
}
cout << ") is : " << sum << "\n";
return 0;
}
catch (exception& e) {
cerr << "Error: " << e.what() << "\n";
keep_window_open();
return 1;
}
catch (...) {
cerr << "Oops: Unknown exception!\n";
keep_window_open();
return 2;
}
}