Удалить из строки слова, которые начинаются на букву "r" и имеют нечётную длину - Turbo Pascal
Формулировка задачи:
Дана строка. Слова отделены пробелом. Вывести строку, удалив слова, которые начинаются на букву "r" и имеют нечетную длину.
Попробовал так, программа не идет должным образом.
Буду очень признателен за помощь!
Решение задачи: «Удалить из строки слова, которые начинаются на букву "r" и имеют нечётную длину»
textual
Листинг программы
uses crt; var str:string; i,j,k:integer; begin clrscr; writeln('Введите строку, содержащую слова начинающиеся на букву r'); readln(str); str:=' '+str+' ';{добавим пробел в начало и в конец для удобства} i:=2; {начнем со 2 символа} while i<=length(str) do {пока не конец} if (str[i]='r') and(str[i-1]=' ') then{если r, а перед ней пробел} begin j:=i; k:=0; while(j<=length(str))and (str[j]<>' ')do {пока не конец строки и не пробел} begin k:=k+1;{считаем} j:=j+1;{идем вперед} end; if odd(k) then delete(str,i,k){если длина нечетная, удаляем слово} else i:=i+k; {иначе перешагиваем} end else i:=i+1;{иначе на 1 вперед} delete(str,1,1);{удалим первый пробел} writeln(str); readln end.
Объяснение кода листинга программы
- Ввод строки, содержащей слова, начинающиеся на букву
r
. - Добавление пробела в начало и в конец строки для удобства обработки.
- Инициализация переменных: i = 2, j = 2, k = 0.
- Цикл while, выполняющийся до тех пор, пока i не станет больше длины строки.
- Проверка: если i-й символ равен
r
и предыдущий символ равен - Установка j равным i.
- Цикл while, выполняющийся до тех пор, пока j не станет больше длины строки и j-й символ не равен
- Увеличение k на 1.
- Увеличение j на 1.
- Проверка: если k - это нечетное число, то удаляем слово.
- Если k четное, то увеличиваем i на k.
- Если k нечетное, то удаляем слово.
- Удаление первого пробела в начале строки.
- Вывод обработанной строки.
- Чтение строки с клавиатуры для подтверждения ввода.
- Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д