Помощь - Поиск - Пользователи - Календарь
Полная версия: Цифры
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
sklip
Как сделать так, чтобы с клавиатуры вводились только цифры. А при попытки ввести буквы, программа не реагировала .

И ещё, как вычислить вот это?
virt
используй readkey.
и если введена цифра коды : 30h-39h если не ошибаюсь.

Код
sqrt(a/(3.4-d))
AlaRic
Не реагировала - это как? Ждала цифр или вылетала? Турбо паскаль в этом случае просто вылетает, если я конечно не ошибаюсь!
virt
AlaRic
sklip наверное имела ввиду если цифра то что-то с ней делать ,если не цифра то ничего не делать.
Romtek
Читаешь код клавиши. Если цифра - заносишь в стек и считаешь их кол-во.
По нажатии ввода останавливаешься и извлекаешь из стека числа, и формируешь число.
ABC = C*10^0 + B*10^1 + A*10^2
Romtek
Обработка правильного вывода, чтобы прога не вылетала при введении буквы, делается так:
Код
repeat
 {$I-}
 readln(num);
 {$I+}
until IOresult=0;


PS Пример можно поместить а FAQ
sklip
Цитата
AlaRic
sklip наверное имела ввиду если цифра то что-то с ней делать ,если не цифра то ничего не делать.


Во первых, ни имела, а имел.
Во вторых, введёные цифры надо посчитать по формуле, т.е. цифр должно быть 2 введины с клавиатуры.
Как сделать, чтобы число D было не равно 3.4 т.е. это число не вводилось?
APAL
Вопрос был поставлен не правильно....

Ведь это же обычная "защита от дурака".
Надо считать не сразу все выражение целиком, а только 3.4-D и если итог равен 0 попросить ввести значение еще раз или выдать сообщение, что решений нет.
Это как корни квадратного уравнения - сначала считать дискриминант, а потом все остальное... smile.gif
APAL
Кстати, надо ввести еще проверку на положительность выражения под корнем перед вычисления самого корня. ;)
Romtek
Простая проверка
if D=3.4 then {заново ввести D}

В чём проблема с формулой? Кв. корень?
sklip
А как ограничить количество вводимых символов до запятой и после
Максимальное число. 99.99
Altair
Ну как как, просто вводим данные в строку посимвольно, и все время следим за размером строки. Так и защита от "дарака" реализуется, вводим данные в строку, а потом преобразуем в цифры, если ошибка будет, то просим заново ввести.
Stream
Лучше всего для ограничения количества вводимых символов использовать функцию ReadBuf, а для перевода в число - Val..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.