Перевернуть в строке слово, начинающиеся на определенную букву - 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.

Объяснение кода листинга программы

  1. Ввод текста и буквы с помощью функции readln.
  2. Объединение введенного текста со знаком пробела.
  3. Получение длины строки s.
  4. Инициализация переменных n, i и j байтами.
  5. Запуск цикла while, который будет выполняться до тех пор, пока i меньше или равно n.
  6. Проверка условия (s[i] = c) и (s[i-1] in rz). Если это условие истинно, то...
  7. Инициализация пустой строки s1 и переменной j, которая будет использоваться для поиска следующего символа в строке s.
  8. Запуск цикла while, который будет выполняться до тех пор, пока j меньше или равно n и символ в s[j] не является разделителем (в данном случае это пробел).
  9. Добавление символа s[j] к s1.
  10. Увеличение j на 1.
  11. Удаление символа s[i] из строки s.
  12. Инициализация пустой строки s2.
  13. Запуск цикла for, который будет использоваться для объединения символов из s1 в s2.
  14. Добавление символа s1[j] к s2.
  15. Увеличение j на 1.
  16. Увеличение i на длину s2.
  17. Удаление символа s[1] из s.
  18. Вывод полученной строки s на экран.
  19. Конец программы.

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы