При вводе данных должен осуществляться контроль правильности ввода и удовлетворение заданному диапазону.
Как это можно реализовать?
Мои мысли по этому поводу.
Можно считать число в виде строки, просмотреть отдельный символ и сравнить на равенство с цифрой.
Мне кажется это не красивый способ, поэтому прошу о помощи!
Заранее благодарен!
14.01.08 15:35: Перенесено модератором из 'Этюды для программистов' — Кодт
Здравствуйте, m.victor, Вы писали:
MV>При вводе данных должен осуществляться контроль правильности ввода и удовлетворение заданному диапазону. MV>Как это можно реализовать?
Как вариант — перевести границы диапазона в строки и сравнивать лексикографически (a la strcmp). Не самое, наверно, эффективное, но довольно короткое решение.
Здравствуйте, m.victor, Вы писали:
MV>При вводе данных должен осуществляться контроль правильности ввода и удовлетворение заданному диапазону. MV>Как это можно реализовать?
если не заморачиваться сильно то можно использовать atoi(); atol(); atof(); из srdlib
Здравствуйте, deniok, Вы писали:
MV>>При вводе данных должен осуществляться контроль правильности ввода и удовлетворение заданному диапазону. MV>>Как это можно реализовать?
D>Как вариант — перевести границы диапазона в строки и сравнивать лексикографически (a la strcmp). Не самое, наверно, эффективное, но довольно короткое решение.
Здравствуйте, m.victor, Вы писали:
MV>Можно считать число в виде строки, просмотреть отдельный символ и сравнить на равенство с цифрой. MV>Мне кажется это не красивый способ, поэтому прошу о помощи!
Смотря откуда ввести. В общем случае — ввести строку, распарсить, убедиться, что это именно число, а не, например, матерное слово, проверить диапазон, в случае ошибки вменяемо выругаться, чтобы пользователь понял, что именно от него хотят.
Если надо ввести именно цифру в интерактивной программе — ну например, можно нарисовать окошко с "клавиатурой" как у калькулятора.
Здравствуйте, m.victor, Вы писали:
MV>При вводе данных должен осуществляться контроль правильности ввода и удовлетворение заданному диапазону. MV>Как это можно реализовать?
MV>Мои мысли по этому поводу. MV>Можно считать число в виде строки, просмотреть отдельный символ и сравнить на равенство с цифрой. MV>Мне кажется это не красивый способ, поэтому прошу о помощи! MV>Заранее благодарен!
для проверки на допустимые символы можно использовать функцию strspn
Здравствуйте, m.victor, Вы писали:
MV>При вводе данных должен осуществляться контроль правильности ввода и удовлетворение заданному диапазону. MV>Как это можно реализовать?
MV>Мои мысли по этому поводу. MV>Можно считать число в виде строки, просмотреть отдельный символ и сравнить на равенство с цифрой. MV>Мне кажется это не красивый способ, поэтому прошу о помощи! MV>Заранее благодарен!
Что за проблемы вообще... Введённые в систему данные будут ведь как-то использоваться? Будут при этом преобразованы в числа, объекты, и т.д.? Ну так преобразуем и проверяем... boost::lexical_cast в помощь.
Здравствуйте, m.victor, Вы писали:
MV>При вводе данных должен осуществляться контроль правильности ввода и удовлетворение заданному диапазону. MV>Как это можно реализовать?
MV>Мои мысли по этому поводу. MV>Можно считать число в виде строки, просмотреть отдельный символ и сравнить на равенство с цифрой. MV>Мне кажется это не красивый способ, поэтому прошу о помощи! MV>Заранее благодарен!
1. считать число в виде строки
2. преобразовать строку в число: atoi(str)
3. проверки проводить с числом.
Здравствуйте, m.victor, Вы писали:
MV>При вводе данных должен осуществляться контроль правильности ввода и удовлетворение заданному диапазону. MV>Как это можно реализовать?
strtol(3)
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)