Удалить пробелы, стоящие между первым вторым словами, а также между двумя последними словами - Pascal
Формулировка задачи:
Удалить пробелы, стоящие между первым вторым словами, а также между двумя последними словами, на паскале
Решение задачи: «Удалить пробелы, стоящие между первым вторым словами, а также между двумя последними словами»
textual
Листинг программы
var
s:string;
i,j,k:integer;
begin
repeat
write('введите строку:');readln(s);
until s<>'';
i:=1;
while (s[i]=' ')and (i<length(s)) do i:=i+1;{пропуск лидирующих пробелов}
for k:=i to length(s) do
if s[k]=' ' then begin
while (s[k]=' ') and (k<length(s)) do delete(s,k,1);
break;
end;
j:=length(s);
while (s[j]=' ') and (j>1) do j:=j-1; {пропуск финишных пробелов}
k:=j;
repeat
if (k>1) and (s[k]=' ') and (k<length(s)) then begin
while (s[k]=' ') and (k>1) do begin delete(s,k,1);k:=k-1;end;
break;
end;
k:=k-1;
until k<=i;
writeln('Полученная строка: "',s,'"');
end.
Объяснение кода листинга программы
- Создается переменная s и переменные-счетчики i, j, k для работы со строкой:
s- пустая строка,i- счетчик для поиска первого непробельного символа,j- счетчик для поиска последнего непробельного символа,k- вспомогательный счетчик.
- Пользователю предлагается ввести строку, циклический запрос ввода повторяется, пока строка не будет заполнена.
- Пока переменная i меньше, чем длина строки и символы по указанному индексу строки равны пробелу, значение переменной i увеличивается на 1. Этот фрагмент кода пропускает начальные пробелы в строке.
- Организуется цикл перебора всех символов строки от i до конца строки.
- Если текущий символ - пробел, то внутри этого условия осуществляется удаление всех последующих пробелов до первого непробельного символа, затем цикл завершается.
- Устанавливается значение j равное длине строки.
- Запускается цикл, который перебирает все символы строки с конца в начало до первого непробельного символа.
- Если текущий символ - пробел, то внутри этого условия осуществляется удаление всех предыдущих пробелов до первого непробельного символа, затем цикл завершается.
- Выводится итоговая отредактированная строка без лидирующих и финишных пробелов.