Top.Mail.Ru
Ответы
Аватар пользователя
6лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

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.

По дате
По рейтингу
Аватар пользователя
Просветленный
6лет

я б так сделал:
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.

Аватар пользователя
Высший разум
6лет

Ну например:
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];