Перевернуть в строке слово, начинающиеся на определенную букву - Pascal
Формулировка задачи:
Дорогие, у меня к вам небольшой вопрос. Как можно перевернуть в строке слово начинающиеся на определенную букву, допустим "a"?
Решение задачи: «Перевернуть в строке слово, начинающиеся на определенную букву»
textual
Листинг программы
const rz=[' ',',','.','!','?'];//разделители слов var s,s1,s2:string; n,i,j:byte; c:char; begin writeln('Введите текст'); readln(s); write('Введите букву c='); readln(c); s:=' '+s; n:=length(s); i:=2; while i<=n do if (s[i]=c)and(s[i-1] in rz) then//если новое слово и на заданную букву begin s1:=''; j:=i; while(j<=n)and not(s[j] in rz)do begin s1:=s1+s[j]; j:=j+1; end; delete(s,i,length(s1)); s2:=''; for j:=length(s1)downto 1 do s2:=s2+s1[j]; insert(s2,s,i); i:=i+length(s2); end else i:=i+1; delete(s,1,1); write(s); end.
Объяснение кода листинга программы
- Ввод текста и буквы с помощью функции readln.
- Объединение введенного текста со знаком пробела.
- Получение длины строки s.
- Инициализация переменных n, i и j байтами.
- Запуск цикла while, который будет выполняться до тех пор, пока i меньше или равно n.
- Проверка условия (s[i] = c) и (s[i-1] in rz). Если это условие истинно, то...
- Инициализация пустой строки s1 и переменной j, которая будет использоваться для поиска следующего символа в строке s.
- Запуск цикла while, который будет выполняться до тех пор, пока j меньше или равно n и символ в s[j] не является разделителем (в данном случае это пробел).
- Добавление символа s[j] к s1.
- Увеличение j на 1.
- Удаление символа s[i] из строки s.
- Инициализация пустой строки s2.
- Запуск цикла for, который будет использоваться для объединения символов из s1 в s2.
- Добавление символа s1[j] к s2.
- Увеличение j на 1.
- Увеличение i на длину s2.
- Удаление символа s[1] из s.
- Вывод полученной строки s на экран.
- Конец программы.