Отформатировать восклицательные знаки в строке - Pascal ABC
Формулировка задачи:
Замена в строках. Дана строка. Отформатировать восклицательные знаки в строке.
Решение задачи: «Отформатировать восклицательные знаки в строке»
textual
Листинг программы
program z1717811;
var i:integer;
s:string;
begin
cls;
writeln('Введите текст:');
readln(s);
i:=1;
while i<length(s) do
if (s[i]=' ') and ((s[i+1]=' ') or (s[i+1]='!'))
then delete(s,i,1)
else i:=i+1;
//if (s[1]=' ') then delete(s,1,1);
//if (s[length(s)]=' ') then delete(s,length(s),1);
i:=1;
while i<length(s) do
begin
if (s[i]='!') and (s[i+1]<>' ')
then begin insert(' ',s,i+1); i:=i+1 end;
i:=i+1;
end;
writeln(s)
end.
Объяснение кода листинга программы
- Программа начинается с объявления переменных
iиs. Переменнаяiявляется целочисленной, а переменнаяsявляется строкой. - Выводится сообщение «Введите текст:», чтобы пользователь мог ввести строку.
- С помощью функции
readln(s)происходит чтение строки из ввода пользователя и сохранение её в переменнуюs. - Инициализируется переменная
iсо значением 1. - Запускается цикл
while i<length(s)(цикл будет выполняться до тех пор, пока значение переменнойiменьше длины строкиs). - Внутри цикла проверяется условие: если текущий символ в строке
sявляется пробелом и следующий символ также является пробелом или знаком восклицания, то символ восклицания удаляется из строки. - Если условие не выполняется, то переменная
iувеличивается на 1. - После завершения внутреннего цикла, переменная
iснова инициализируется со значением 1. - Запускается внешний цикл
while i<length(s)(цикл будет выполняться до тех пор, пока значение переменнойiменьше длины строкиs). - Внутри внешнего цикла проверяется условие: если текущий символ в строке
sявляется знаком восклицания и следующий символ не является пробелом, то знак восклицания заменяется на пробел. - Если условие не выполняется, то переменная
iувеличивается на 1. - После завершения внешнего цикла, выводится отформатированная строка
sс помощью функцииwriteln(s).