Короче, задача такая: перегрузить оператор ввода класса дроби, при этом учесть, что если введен знаменатель "0", то должно выбрасываться исключение (не из оператора ввода, а из конструктора класса, он уже написан) ну еще нужно проверить является ли вводимый char c слэшом('/').
istream & operator >> (istream & stream, Rational & rational)
{
int a, b;
char c;
stream >> a >> c >> b;
//тут что-то помутить с флагами, чтобы решить задачу
rational._num = a;
rational._denom = b;
rational.reduce();
return stream;
}
Ну, я как минимум проверял бы состояние потока после чтения, и не пытался бы ничего делать, если оно не good
. Далее проверял бы этот c
, если не оно - генерировал бы исключение типа bad_format
или, как вариант, устанавливал соответствующий флаг потока. Потом создавал бы новый объект из введенных данных - тогда он сам бы генерировал исключение, если что, при этом старый объект оставался бы в корректном состоянии - по сути, транзакция... Если все в порядке и тут - вот только тогда бы выполнял присваивание переданному rational
.
Всем доброго дня, необходимо было написать программу разрезания многоугольника прямой, дело сделаноПравда использовал библиотеку шаблонов...
Есть двумерный массив чиселInt mass[15][20] Нужно передать его в функцию так, чтобы изменение его в функции отражалось в main
Доброго времени сутокЕсть код, который нужно изменить под статичный массив