Как сделать так, чтобы с клавиатуры вводились только цифры. А при попытки ввести буквы, программа не реагировала .
И ещё, как вычислить вот это?
Эскизы прикрепленных изображений
используй readkey.
и если введена цифра коды : 30h-39h если не ошибаюсь.
Не реагировала - это как? Ждала цифр или вылетала? Турбо паскаль в этом случае просто вылетает, если я конечно не ошибаюсь!
AlaRic
sklip наверное имела ввиду если цифра то что-то с ней делать ,если не цифра то ничего не делать.
Читаешь код клавиши. Если цифра - заносишь в стек и считаешь их кол-во.
По нажатии ввода останавливаешься и извлекаешь из стека числа, и формируешь число.
ABC = C*10^0 + B*10^1 + A*10^2
Обработка правильного вывода, чтобы прога не вылетала при введении буквы, делается так:
Вопрос был поставлен не правильно....
Ведь это же обычная "защита от дурака".
Надо считать не сразу все выражение целиком, а только 3.4-D и если итог равен 0 попросить ввести значение еще раз или выдать сообщение, что решений нет.
Это как корни квадратного уравнения - сначала считать дискриминант, а потом все остальное...
Кстати, надо ввести еще проверку на положительность выражения под корнем перед вычисления самого корня. ;)
Простая проверка
if D=3.4 then {заново ввести D}
В чём проблема с формулой? Кв. корень?
А как ограничить количество вводимых символов до запятой и после
Максимальное число. 99.99
Ну как как, просто вводим данные в строку посимвольно, и все время следим за размером строки. Так и защита от "дарака" реализуется, вводим данные в строку, а потом преобразуем в цифры, если ошибка будет, то просим заново ввести.
Лучше всего для ограничения количества вводимых символов использовать функцию ReadBuf, а для перевода в число - Val..