Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Удвоить вхождение символа в строку

Автор: Sunder 28.11.2006 3:07

Здравствуйте! Помогите пожалуйста разобраться с задачкей на строки.
Вот, как звучит:

"Дана строка S и символ C. Удвоить каждое вхождение символа C в строку S"

В общем-то, я практически всю задачу написал, но не могу добиться того, чтобы вместо одного искомого символа подставлялось два таких же.

Вот задача:


uses crt;
var s:string;
c:char;
q:boolean;
procedure input(var s:string; var c:char);
begin
writeln('Введите строку:');
readln(s);
writeln('Введите символ:');
readln©;
end;
procedure check(s:string; c:char; var q:boolean);
var
i:integer;
begin
q:=false;
for i:=1 to length(s) do
if s[i]=c then q:=true;
if q=false then
writeln('Такого символа в строке нет!');
end;
procedure zamena(var s:string; c:char);
var
i:integer;
begin
for i:=1 to length(s) do
if s[i] = c then
s[i]:=c; {Вот здесь должно быть присваивание двойного сивола - но я не могу это сделать wacko.gif }
writeln('Финальная строка:');
writeln(s);
end;
begin
clrscr;
input(s,c);
check(s,c,q);
if q=true then
zamena(s,c);
readln;
end.


Помогите пожалуйста!

Автор: volvo 28.11.2006 3:12

procedure zamena(var s:string; c:char);
var
i:integer;
_result: string;
begin
_result := '';
for i:=1 to length(s) do begin
_result := _result + s[i];
if s[i] = c then _result := _result + c;
end;
s := _result;

writeln('Финальная строка:');
writeln(s);
end;
Или работать через цикл While и пользоваться Insert ...

Автор: Sunder 28.11.2006 3:55

Большое пасиба!
Работает... good.gif