Задача:
Дана строка символов. Преобразовать строку, заменив в ней каждую точку многоточием (т.е тремя точками).
Описание решения:
Для начала, естественно, считываем строку с клавиатуры. Далее в цикле while , пока счетчик меньше значения длины строки, делаем следующее:
Проверяем является ли текущий символ точкой
- Если не точка, то просто наращиваем счетчик
- Если точка, то нам нужно запомнить левую часть строки (lstr) вместе с точкой. Мы проходим циклом от 1 символа до номера текущего символа, каждый раз прибавляя к переменной левой части строки (lstr) символ. Затем получаем правую часть (rstr) строки вместе с точкой, для этого проходим в цикле от номера текущего элемента (точки) до длины строки, каждый раз прибавляя к rstr очередной символ. Теперь у нас есть левая часть строки с точкой в конце и правая часть строки с точкой в начале. Осталось заменить основную строку новой. Основная строка = левая часть + точка + правая часть. Далее нужно не просто нарастить счетчик, а передвинуть его на 3 элемента, чтобы не попасть на одну из вновь созданных точек.
Реализация на Turbo Pascal 7:
program z77; var str:string; i:integer; j:integer; lstr, rstr: string; begin write ('Vvedite stroku simvolov:'); readln (str); i:=1; while i<=length (str) do begin if str[i]='.'then begin lstr:=''; for j:=1 to i do lstr:=lstr+str[j]; rstr:=''; for j:=i to length (str) do rstr:=rstr+str[j]; str:=lstr+'.'+rstr; i:=i+3; end else i:=i+1; end; writeln (str); readln; end.
Блок-схема:
Блок-схема сгенерирована автоматически программой Артема Тишакова «BS 1.0″.
Метки: алгоритм