👍 0 👎 |
Проверка корректности ввода C++Подскажите, пожалуйста, как можно проверить три вещественных числа, введенных с клавиатуры, на то, являются ли они числами. То есть программа должна работать так: пользователь вводит три числа (a, b, c), если хотя бы одно из этих чисел будет являться не числом (строкой, буквой, пробелом, переходом на другую строку), в конце выводится сообщение об ошибке (например, «а» должно быть числом! «b» должно быть числом!), после чего программа либо закрывается (если введены корректные данные), либо запрашивает ввести числа заново. Заранее спасибо!
обучение C++ изучение языков программирования программирование обучение
Anonymous #Ejg49p6Q
|
👍 0 👎 |
1. Прочесть строку с предположительным числом. |
👍 0 👎 |
Разные есть способы. Лично я предпочитаю использовать функцию форматированного ввода, scanf() например. Внимательно изучите её описание – и кодируйте. |
👍 0 👎 |
Вопрос про C++, а не Си |
👍 +1 👎 |
Автор вопроса не указывал запрета на использование библиотеки функций ввода-вывода Си, в программе на C++ они столь же хорошо работают. |
👍 0 👎 |
static const std::regex doubleRegex{ R"([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)" }; |
👍 0 👎 |
Числа считываете в виде строк(переменную типа string). Далее проверяете каждый символ, что он цифра, точка(только одна и не исключением первого и последнего символов), знак минус(только нулевой символ). Если все условия выполнены, то число, если нет, просите ввести новое. Желательно для проверки числа написать функцию, что бы исключить дублирование кода. |
👍 0 👎 |
Еще один вариант с обработкой exception и методами класса std::string |
👍 0 👎 |
нужно считывать эти параметры не как числа, а как строки. Делать проверку строки на наличие других символов и уже только на этом основании дальше строить логику. |
👍 0 👎 |
Написать программу, присвоив необходимые типы соответствующих переменных. |
👍 0 👎 |
При запуске программы в Делфи возникает ошибка "First chance exception at $7573C6E3. Exception class EVariantTypeCastError with message 'Could not convert variant of type (Null) into type (String)'. Process P_K_K.exe (2280)"
|
👍 0 👎 |
Visual BASIC
|