Для реализации проверки на число в языке C++ можно использовать цикл, который будет проверять каждый символ в введенной строке. Если символ не является допустимым для числа (например, точка или минус в середине числа), то программа должна выдать ошибку и перейти обратно к вводу.
Вот пример кода, который выполняет такую проверку:
#include <iostream> #include <string> bool isValidNumber(const std::string& input) { bool hasDecimalPoint = false; bool hasMinusSign = false; for (char c : input) { if (c == '.') { if (hasDecimalPoint) { return false; // Обнаружено более одной точки } hasDecimalPoint = true; } else if (c == '-') { if (hasMinusSign) { return false; // Обнаружено более одного минуса } if (!input.empty() && input[0] != '-') { return false; // Минус не находится в начале строки } hasMinusSign = true; } else if (!std::isdigit(c)) { return false; // Найден недопустимый символ } } // Если программа дошла до этой точки, значит введенная строка является корректным числом return true; } int main() { std::string input; do { std::cout << "Введите число: "; std::cin >> input; if (!isValidNumber(input)) { std::cout << "Ошибка ввода. Пожалуйста, введите число еще раз." << std::endl; } } while (!isValidNumber(input)); std::cout << "Вы ввели корректное число: " << input << std::endl; return 0; }
В этом примере функция isValidNumber()
выполняет проверку на число в строке. Она использует флаги hasDecimalPoint
и hasMinusSign
, чтобы отслеживать, были ли обнаружены точка или минус во время проверки. Если найдено более одной точки или минус не находится в начале строки, функция возвращает false
. Если символ не является десятичной цифрой или точкой или минусом, функция также возвращает false
. Если проверка проходит успешно, функция возвращает true
.
В функции main()
используется цикл do-while
, чтобы проверить валидность введенной строки. Если введенная строка не является корректным числом, выводится сообщение об ошибке и программа возвращает обратно к вводу. Если введенная строка является корректным числом, выводится сообщение с этим числом.
Такой подход к проверке чисел обеспечивает точность и гибкость в обработке различных ситуаций ошибок при вводе данных.