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