Else
If St[i]='-' Then
begin Delete(St,i,1); Insert(':',St,1); end;
Writeln('Результуючий рядок: ',St);
Readkey;
End.
ЗАДАЧА №382
Умова: У даному тексті замінити всі символи «.» на послідовність символів «...». Якщо у тексті зустрічаються підряд три крапки, то залишати їх без змін.
Розв'язання: В цій задачі після виконання замін збільшується довжина рядка, причому після шуканого символу становиться такий самий. Тому, якщо цикл організувати, як і в попередньому випадку, весь текст, починаючи з першої крапки, замшиться на крапки (подумайте чому). Тому в цій задачі доцільно скористатися циклом з передумовою, що дозволяє змінну циклу змінювати на будь-який крок (а не тільки на одиницю, як в циклі з параметром). Для того, щоб не виконувати заміну у випадку наявності трьох крапок в тексті, будемо перевіряти не тільки поточну, а й наступну за нею позицію (не забудьте при цьому про можливість виходу за межі рядка!!!). Останній символ рядка тут перевірятиметься окремо.
Зверніть увагу, що у випадку, коли довжина результуючого рядка буде складати більш ніж 255 символів, зайві символи будуть втрачатися. Для спрощення задачі ми їх не враховуємо, але для сильних учнів можна запропонувати організувати збереження цих символів у додатковому рядочку. Програма, що реалізує описаний алгоритм, має вигляд:
Program Example_382 ;
Uses crt;
Var i:word; {i - змінна циклу} St: string; {St — даний текст}
Begin
Clrscr;
Write('Введіть текст: ');
Readln(St); i:=1;
While i<length(St) do
Begin
If (St[i]='.') and (St[i+1]<>'.') Then
begin Insert(*..',St,i+l); i:=i+2; end;
i:=i+1;
End;
If St[length(St)]='.' Then St:=St+'..';
Writeln('Результуючий рядок: ',St);
Readkey;
End.