Помощь - Поиск - Пользователи - Календарь
Полная версия: Ввод с клавиатуры
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Dunkel_L
Нужно: ввод с клавиатуры только чисел и десятичной запятой, все остальные клавиши просто игнорировать.
Помогите с процедурой.

procedure menu1;
var Key: Word;
var m:set of ord('0')..ord('9');
begin
m:=[ord('0'),ord('1'),ord('2'),ord('3'),ord('4'),ord('5'),ord('6'),ord('7'),ord('8'),ord('9')]+[ord(',')];
if  (not(key in m)) and (key<>ord(','))
      then
readln(Key);

neic
Вот тут сделал, думаю то что тебе нужно:
var s:char;
...
writeln('Введите символы. Конец ввода "*":');
Repeat
    read(s)
    If (s='1') or (s='2') or (s='3') or (s='4') or (s='5') or (s='6') or (s='7') or( s='8') or (s='9') or (s='0') or (s=',') then
    begin
            ...
    end;
Until s='*';
volvo
blink.gif

Я бы сделал так:
uses crt;
var s:char;
begin
  writeln('Вводите символы (Enter - конец ввода):');
  Repeat

  s := readkey;
  If s in ['0'..'9', ','] then begin
    write(s);
    {
      здесь - если надо еще что-то сделать с разрешенными символами,
      например, можно записать их в строку...
    }
  end;

Until s = #13;
end.

neic
volvo
Чёрт smile.gif И точно, можно было и так сделать smile.gif
Просто не задумывался над readkey.
volvo
Внимательнее задания надо читать, тогда будешь задумываться. Ясно было сказано:
Цитата
все остальные клавиши просто игнорировать.
У тебя вводится все подряд - не игнорируется вообще ничего, потому как проверка ПОСЛЕ ввода...
neic
Понял. Не догнал задание не много. blush.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.