Упражнение 2

Изменим программу так, чтобы она во введенном слове подсчитывала число букв «а» и заменяла их буквами «б». Так как операции ввода-вывода строки аналогичны, то можно сделать вывод о том, что достаточно заменить процедуру 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.

Добавить комментарий