Вывести три первых слова текста начинающихся и заканчивающихся согласной буквой - Pascal

Узнай цену своей работы

Формулировка задачи:

Дан произвольный текст на русском языке. Вывести три первых слова этого текста начинающихся и заканчивающихся согласной буквой.

Решение задачи: «Вывести три первых слова текста начинающихся и заканчивающихся согласной буквой»

textual
Листинг программы
const rz=[' ','.',',','-','?','!'];{симолы, разделители слов, можно добавить}
      gl='АаЕеЁёИиОоУуЫыЭэЮюЯя';
var s,s1,smx:string;
    n,i,j,k:byte;
begin
writeln('Введите текст на русском языке');
readln(s);
s:=' '+s;{добавим пробел в начало}
n:=length(s);
writeln('Первые 3 слова начинающиеся и заканчивающиеся согласной буквой');
i:=2;
k:=0;
while (i<=n)and(k<3) do
if not(s[i] in rz)and (s[i-1] in rz) then{если не разделитель
                                и перед ним разделитель, то начало слова*}
 begin
  j:=i;
  s1:='';
  while (j<=n) and not(s[j] in rz) do {пока не разделитель и не конец строки}
   begin
    s1:=s1+s[j];
    j:=j+1;
   end;
  if (pos(s1[1],gl)=0)and(pos(s1[length(s1)],gl)=0) then
   begin
    k:=k+1;
    writeln(s1);
   end;
  i:=i+length(s1);
 end
else i:=i+1;{пропускаем разделители}
if k=0 then write('Таких слов нет')
else if k<3 then write('Таких слов только ',k);
end.

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

  1. const rz=[' ','.',',','-','?','!']; {символы, разделители слов, можно добавить}
  2. gl='АаЕеЁёИиОоУуЫыЭэЮюЯя'; // строка, содержащая гласные буквы
  3. var s,s1,smx:string; // объявление переменных s, s1, smx с типом string
  4. n,i,j,k:byte; // объявление переменных n, i, j, k c типом byte
  5. begin - начало основной программы
  6. writeln('Введите текст на русском языке'); // выводит на экран просьбу ввести текст на русском языке
  7. readln(s); // считывает введенную строку и сохраняет ее в переменную s
  8. s:=' '+s; // добавляет пробел в начало строки s
  9. n:=length(s); // вычисляет длину строки s и сохраняет в переменной n
  10. writeln('Первые 3 слова начинающиеся и заканчивающиеся согласной буквой'); // выводит на экран информацию о необходимости вывода первых трех слов
  11. i:=2; // инициализирует переменную i значением 2
  12. k:=0; // инициализирует переменную k значением 0
  13. while (i<=n)and(k<3) do // начало цикла while, который будет выполняться пока i не будет больше n И k меньше 3
  14. if not(s[i] in rz)and (s[i-1] in rz) then // если символ s[i] не является разделителем и символ s[i-1] является разделителем, то
  15. begin
  16. j:=i; // присваивает переменной j значение i
  17. s1:=''; // очищает строку s1
  18. while (j<=n) and not(s[j] in rz) do // начало цикла while, который будет выполняться пока j меньше n и s[j] не является разделителем
  19. begin
  20. s1:=s1+s[j]; // добавляет символ s[j] к строке s1
  21. j:=j+1; // увеличивает значение переменной j на 1
  22. end; // конец цикла while
  23. if (pos(s1[1],gl)=0)and(pos(s1[length(s1)],gl)=0) then // если в строке s1 не содержится гласная буква в начале и конце
  24. begin
  25. k:=k+1; // увеличивает значение переменной k на 1
  26. writeln(s1); // выводит на экран строку s1
  27. end; // конец условного оператора
  28. i:=i+length(s1); // увеличивает значение переменной i на длину строки s1
  29. end // конец условного оператора
  30. else i:=i+1; // иначе увеличивает значение переменной i на 1 (пропускает разделители)
  31. if k=0 then write('Таких слов нет') // если k равно 0, то выводит на экран Таких слов нет
  32. else if k<3 then write('Таких слов только ',k); // если k меньше 3, то выводит количество слов
  33. end. // конец основной программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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