нафиг, используйте std::vector
3. Input —> input (чтобы было однообразно с остальными функциями, который у вас в camelCase)
4. Непонятно, зачем Input ловить exception и перебрасывать его как invalid_argument. Кажется, что если там возникла какая-то ошибка, то вряд ли в этом виноват неверный параметр message. Аналогичная претензия ко всем остальным - странно, что некорректный ввод пользователя рапортуется ошибкой invalid_argument.
5. Input не стоит проверять число на неотрицательность. Да и сообщение, вообще говоря, не стоит выводить - это всё три сильно независимых действия, незачем их мешать в одной функции, имхо.
6. Непонятно, зачем в Input нужна переменная N, когда можно просто сделать return.
7. В countDigits поехали отступы. А ещё бинарные операторы (в том числе +=) стоит везде отбивать одинаково: либо пробелами с двух сторон, либо никак. Аналогичная претензия к расстановке фигурных скобок: у вас сейчас три стиля смешано.
8. Всё ещё не нужна переменная tmp. Подсказка: зачем вообще вызывать countDigits внутри toReverseBin, если вы в этой же функции создадите строку с цифрами?
9. std::string стоит передавать как const std::string&.
1. Переделал 2, 3, 8 и 9 по той же ссылке 2. При замене pow(a, b) на exp(log(a) * b) программа перестаёт правильно работать 3. В 4 и 5 я пытаюсь работать с исключениями. Как нас в ВУЗе научили (никак) - примерно так и работаю. Ну и input вынесен в отдельную функцию, чтобы эти самые ошибки выбрасывать не в main 4. С 7 труднее, я особо не слежу за тем как всё расставляю, поэтому периодически в Qt клацаю на вот это:
Обсуждают сегодня