


PascalABC. Помогите с оптимизацией двух кодов.
На каникулах тренируюсь перед переходом в 9 класс в класс с небольшим уклоном на программирование (ранее вообще не программировал). Судя по этим кодам, у меня есть будущее как у программиста, и как можно оптимизировать эти коды?
1)(*Извлечение скобок, пробелом, тире в телефоне*)
var
i:integer;
t,t2:string;
begin
t2:='';
Write('Напишите номер телефона: '); Readln(t);
for i:=1 to length(t) do
case t[i] of
'(':Writeln('Встречано ''(''');
')':Writeln('Встречано '')''');
'-':Writeln('Встречано ''-''');
' ':Writeln('Встречано '' ''');
else t2:=t2+t[i]
end;
Writeln('Ваш номер:',t2);
end.
2)(*Угадайка*)
label
final;
var
word,pascal:string;
i,ich:byte;
begin
pascal := 'pascal';
repeat
i := 0;
repeat
Writeln('Угадайте слово, которое я загадал (если устали - нажмите enter)');
Readln(word);
if word='' then break else
begin
If pascal=word then
begin
Writeln('Поздравляю, вы угадали! Теперь вы можете загадать своё слово и испытать друга на интуицию :)');
i:=1;
end
else
Writeln('Неверно!')
end;
until word=pascal;
if i=1 then
begin
Write('Загадайте слово:');
readln(pascal);
if pascal='' then
begin
Writeln('Ошибка: вы должны написать что-либо');
goto final;
end;
Writeln('Поехали испытывать вашего друга)');
for ich:=0 to 10 do
Writeln('[]');
Writeln('Чур, не подсматривать)');
end;
until word='';
final:
end.
я б так сделал:
for i:=1 to length(t) do
case t[i] of
'+','0'..'9':t2:=t2+t[i];
else Writeln('Встречано '''+t[i]+'''');
end;
а еще посмотри вот это,
var
illegal_simbols: set of char = ['(', ')', '-', '+'];
procedure DeleteAllChar(c: char; var s: string);
begin
while pos(c, s) > 0 do
begin
writeln('ВстречЕно''' + c + '''');
delete(s, pos(c, s), 1);
end;
end;
var
t: string;
begin
Write('Напишите номер телефона: ');Readln(t);
foreach var c in illegal_simbols do DeleteAllChar(c, t);
writeln(t);
end.
Ну например:
case t[i] of
'(':Writeln('Встречано ''(''');
')':Writeln('Встречано '')''');
'-':Writeln('Встречано ''-''');
' ':Writeln('Встречано '' ''');
else t2:=t2+t[i]
end;
case t[i] of
'(',')','-','.':Writeln('Встречено "'+t[i]+'"');
else t2:=t2+t[i]
end;
if (t[i] in ['(',')','-','.']) then Writeln('Встречено "'+t[i]+'"') else t2:=t2+t[i];