• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Помогите Исправить

  • Автор темы kot070
  • Дата начала
K

kot070

Вообщем программа такая что если вводим символы a * или цифры то это правда, если остальные символы то ложь и программа должна заканчиваться при нажатии клавиши делете.
Моя беда в том что я не могу сделать чтобы программа закрывалась, при нажатии делете ничего не происходит и еще не могу добавить в ложь заглавные буквы от A до Z
program tek;
uses crt;
var
l:char;
begin clrscr;
while true do
begin
l:=readkey;
case l of 'a', '*', '0'..'9' :
begin
writeln ('l=true', l );
end;
'b'..'z':
writeln ('l=false', l);
#0:
begin
l:=readkey;
if l=#46 then
break;
end;
end;
end;
end.
 
S

Senset

вот ведь настроил-то)))

1) заведомо бесконечные циклы - это жесть, также плохо как юзать goto
2)

Код:
program tek;
uses crt;
var l:char;

begin
clrscr;
repeat
l:=readkey;
if (ord(l)=0) then l:=readkey
else
begin
case l of
'a','*','0'..'9': writeln(l,'=true')
else writeln(l,'=false');
end;
end;
until ord(l)=83;
end.

дополняй как хочешь, проблем по идее быть не должно)
 
K

kot070

огромное спасибо, а как дополнить проверку что мы нажали именно делете? а то здесь вылетает при двух клавишах,когда нажимаем S и когда нажимаем делете
 
S

Senset

вверх, кому не сложно подскажите
да дядь) не повезло тебе что я редко вылезаю в сеть))
Код:
program tek;
uses crt;
var l:char;
toquit:boolean;

begin
clrscr;
repeat
l:=readkey;
writeln('L:=',ord(l));
toquit:=false;
if (ord(l)=0) then
begin
l:=readkey;
toquit:=true;
end
else
begin
case l of
'a','*','0'..'9': writeln(l,'=true')
else writeln(l,'=false');
end;
end;
until (toquit)and(ord(l)=83);
end.

всё банально и просто =)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!