Ввод времени суток в формате hh:mm с ограничением ввода - Free Pascal
Формулировка задачи:
Ввод времени суток в формате hh:mm с ограничением ввода.
ввод кроме цифр блокируется(при нажатии буквы она не отображается на экране);
по нажатии enter читать время
Решение задачи: «Ввод времени суток в формате hh:mm с ограничением ввода»
textual
Листинг программы
uses Crt; type TMyTime = record hh, mm: String[2]; end; procedure InputNumb(var c: Char; const limit: Char); begin repeat c := ReadKey(); until (c in ['0'..limit]); Write(c); end; var time: TMyTime; c: Char; begin time.hh := ' '; time.mm := ' '; Write('Input time (HH:MM): '); InputNumb(time.hh[1], '2'); if (time.hh[1] = '2') then InputNumb(time.hh[2], '3') else InputNumb(time.hh[2], '9'); Write(':'); InputNumb(time.mm[1], '5'); InputNumb(time.mm[2], '9'); WriteLn; Write('Press enter to continue...'); repeat c := ReadKey(); until (c = #13); WriteLn; WriteLn('Time is: ', time.hh, ':', time.mm); end.
Объяснение кода листинга программы
- Объявление переменных и типа данных:
- TMyTime - тип данных, представляющий время суток в формате hh:mm
- time - переменная типа TMyTime, используемая для хранения введенного времени суток
- c - переменная типа Char, используемая для хранения введенного символа
- Создание процедуры InputNumb:
- Процедура используется для ограничения ввода числа в заданном диапазоне
- Входные параметры: c - символ, представляющий текущий вводимый символ, limit - символ, ограничивающий диапазон ввода
- Выполняет цикл до тех пор, пока введенный символ не будет в заданном диапазоне
- Выводит введенный символ
- Ввод времени суток:
- Поле hh переменной time инициализируется как ' ', а поле mm также инициализируется как ' '
- Вывод сообщения с просьбой ввести время суток в формате hh:mm
- Выполняется процедура InputNumb для ввода первой цифры в поле hh
- Если первая цифра равна '2', то выполняется процедура InputNumb для ввода второй цифры в поле hh
- Иначе, если первая цифра не равна '2', то выполняется процедура InputNumb для ввода второй цифры в поле mm
- Вывод символа ':'
- Выполняется процедура InputNumb для ввода первой цифры в поле mm
- Выполняется процедура InputNumb для ввода второй цифры в поле mm
- Вывод сообщения с просьбой нажать Enter для продолжения
- Выполняется цикл до тех пор, пока не будет нажата клавиша Enter
- Вывод сообщения с введенным временем суток
- Ограничение ввода:
- В процедуре InputNumb используется ограничение ввода от '0' до '9' для обоих полей hh и mm
- Если введенный символ не является '0' или '1' и т.д. до '9', то цикл продолжается, пока не будет введен допустимый символ
- Если введенный символ равен '2', то вторая цифра может быть введена только в поле hh, иначе только в поле mm
- Если введенный символ равен '5', то вторая цифра вводится только в поле mm