Èçìåíèì ïðîãðàììó òàê, ÷òîáû îíà âî ââåäåííîì ñëîâå ïîäñ÷èòûâàëà ÷èñëî áóêâ «à» è çàìåíÿëà èõ áóêâàìè «á». Òàê êàê îïåðàöèè ââîäà-âûâîäà ñòðîêè àíàëîãè÷íû, òî ìîæíî ñäåëàòü âûâîä î òîì, ÷òî äîñòàòî÷íî çàìåíèòü ïðîöåäóðó UpChar íà ïðîöåäóðó ChangeChar è ïîìåíÿòü ñîîòâåòñòâóþùèé âûçîâ.
 ïðîöåäóðå ChangeChar áóäåì ïðîñìàòðèâàòü ñòðîêó ñ öåëüþ ïîèñêà áóêâû «à», ÷òî ìîæíî îðãàíèçîâàòü ñ ïîìîùüþ öèêëà while è ñòàíäàðòíîé ôóíêöèè Pos('a', S). Êàê òîëüêî ôóíêöèÿ Pos îáíàðóæèâàåò ïåðâîå ïîÿâëåíèå â ñòðîêå S ïîäñòðîêè «à», îíà âîçâðàùàåò ðåçóëüòàò – íîìåð ïîçèöèè áóêâû «à». Ñ÷åò÷èê íàéäåííûõ áóêâ «à» óâåëè÷èâàåòñÿ íà åäèíèöó, à â ýòó ïîçèöèþ âïèñûâàåòñÿ áóêâà «á» è òàê ïðîäîëæàåòñÿ äî òåõ ïîð, ïîêà â ñòðîêå åñòü áóêâû «à».
Òåêñò ïðîöåäóðû ìîæåò âûãëÿäåòü ñëåäóþùèì îáðàçîì:
procedure ChangeChar(var S: string);
var N : byte;
begin
N:=0; {Îáíóëåíèå ÷èñëà áóêâ "à"}
while Pos('a', S) > 0 do {Åñëè íàéäåíà áóêâà "à", òî}
begin
N:=N+1; {Óâåëè÷èòü ñ÷åò÷èê áóêâ "à"íà 1}
S[Pos('a', S)] := 'á';{3àïèñàòü â ïîçèöèþ áóêâû "à" áóêâó "á"}
End;
Writeln ('B ñëîâå áûëî ', N, ' áóêâ "à" ');
end;
Ñ èñïîëüçîâàíèåì ïðîöåäóðû ChangeChar òåêñò ïðîãðàììû, ïîäñ÷èòûâàþùåé ÷èñëî áóêâ «à» âî ââåäåííîé ñòðîêå è çàìåíÿþùåé èõ áóêâàìè «á», áóäåò òàêèì:
program Change_Letter; {Ïîäñ÷åò è çàìåíà áóêâ "à" íà "á"}
var
S: string:
procedure ChangeChar(var S: string);{Ïðîöåäóðà çàìåíû áóêâû "à" íà "á"}
var N : byte;
begin
N:=0; {Îáíóëåíèå ÷èñëà áóêâ "à"}
while Pos('a', S) > 0 do {Åñëè íàéäåíà áóêâà "à", òî}
begin
N:=N+1; {Óâåëè÷èòü ñ÷åò÷èê áóêâ "à"íà 1}
S[Pos('a', S)] := 'á';{3àïèñàòü â ïîçèöèþ áóêâû "à" áóêâó "á"} end:
Writeln ('B ñëîâå áûëî ', N, ' áóêâ "à" ');
end;
begin {Îñíîâíàÿ ïðîãðàììà}
Write('Ââåäèòå èñõîäíóþ ñòðîêó: ');
Readln (S);
ChangeChar(S); {Âûçîâ ïðîöåäóðû çàìåíû "à" íà "á"}
Writeln('Ïîëó÷èëàñü ñòðîêà ',S);
end.
|