-Цитата от The_Drot Помогите, пожалуйста, школоте:
Нужно в паскале написать программу заменяющую в заданной строке все вхождения "ку" на "за" с помощью операции копирования, удаления и вставки.
как пытался сделать я:
Показать скрытый текст
program xz;
uses crt;
var a,b,c,s:string; i,d,q:integer;
begin
readln(a);
c:='za';
d:=length(a);
for i:=1 to d do
b:=copy(a,i,2);
if b='ky' then begin q:=pos(b,a);
a:=delete(a,q,2);
a:=insert(c,a,q);(здесь ошибка 42)
end;
writeln(a);
readkey;
end.
а что ты присваиваешь, если у тебя delete и insert это процедуры и ничего не возвращают? они просто обрабатывают строку, переданную им.
это первое.
во-вторых избавляйся от таких имён переменных, которые ничего не говорят.
цикл у тебя только лишь копирует элементы и всё, ты begin там не поставил.
Вот так всё работает:
Код:
program xz;
uses crt;
var a,b,c,s:string; i,d,q:integer;
begin
readln(a);
c:='za';
d:=length(a);
for i:=1 to d do begin
b:=copy(a,i,2);
if b='ky' then begin
q:=pos(b,a);
delete(a,q,2);
insert(c,a,q);
end;
end;
writeln(a);
readkey;
end.
А красивее так:
Показать скрытый текст
Код:
program xz;
uses crt;
var ins_sstr,curr_sstr,s:string;
i,len,curr_pos:integer;
begin
readln(s);
ins_sstr:='za';
len:=length(s);
for i:=1 to len do begin
curr_sstr:=copy(s,i,2);
if curr_sstr='ky' then begin
curr_pos:=pos(curr_sstr,s);
delete(s,curr_pos,2);
insert(ins_sstr,s,curr_pos);
end;
end;
writeln(s);
readkey;
end.