Дана строчка, состоящая из российских слов, разбитых пробелом. Определить слово, с
Дана строчка, состоящая из российских слов, разбитых пробелом. Найти слово, с величайшим количеством гласных букв, ребят помогииитее паскаль
1 ответ
Юрий Снурницин
Procedure GetWord(s:string; var p:integer; var w:string; delim:string:=' ');
Получает в w слово из строчки s, которое начинается не ранее позиции p.
Отдаёт новое значение p, указывающее на 1-ый разделитель delim,
который следует за найденным словом либо 0, если таковой разделитель не найден.
По умолчанию слова разделяются не наименее чем одним пробелом
var
i,n:integer;
fBreak:boolean; флаг для прерывания циклов
begin
n:=Length(s); fBreak:=False;
разыскиваем 1-ый символ, отличный от разделителя - начало слова
while ((plt;=n) and (not fBreak)) do
if (p=n) or (s[p]lt;gt;delim) then fBreak:=True
else Inc(p);
отыскиваем очередной разделитель - конец слова
if plt;n then begin
i:=p; Inc(p); fBreak:=False;
while (plt;=n) and (not fBreak) do begin
if (p=n) or (s[p]=' ') then fBreak:=True else Inc(p)
end;
сейчас слово находится меж позициями i и p
w:=Copy(s,i,p-i)
end;
if pgt;=n then p:=0
end;
function CountG(w:string):integer;
отдаёт количество гласных в слове w
var
i,k:integer;
begin
k:=0;
for i:=1 to length(w) do
if w[i] in ['а','е','ё','и','о','у','ы','э','ю','я'] then Inc(k);
CountG:=k
end;
var
s,w,wmax:string;
p,k,gmax:integer;
begin
Writeln('Введите текст, деля слова пробелами');
Readln(s);
s:=LowerCase(s);
p:=1; gmax:=0;
while pgt;0 do begin
GetWord(s,p,w);
k:=CountG(w);;
if gmaxlt;k then begin gmax:=k; wmax:=w end
end;
if gmaxgt;0 then Writeln('В слове "',wmax,'" максимум гласных, одинаковый ',gmax)
else Writeln('Во введенной строке гласных букв не найдено')
end.
Получает в w слово из строчки s, которое начинается не ранее позиции p.
Отдаёт новое значение p, указывающее на 1-ый разделитель delim,
который следует за найденным словом либо 0, если таковой разделитель не найден.
По умолчанию слова разделяются не наименее чем одним пробелом
var
i,n:integer;
fBreak:boolean; флаг для прерывания циклов
begin
n:=Length(s); fBreak:=False;
разыскиваем 1-ый символ, отличный от разделителя - начало слова
while ((plt;=n) and (not fBreak)) do
if (p=n) or (s[p]lt;gt;delim) then fBreak:=True
else Inc(p);
отыскиваем очередной разделитель - конец слова
if plt;n then begin
i:=p; Inc(p); fBreak:=False;
while (plt;=n) and (not fBreak) do begin
if (p=n) or (s[p]=' ') then fBreak:=True else Inc(p)
end;
сейчас слово находится меж позициями i и p
w:=Copy(s,i,p-i)
end;
if pgt;=n then p:=0
end;
function CountG(w:string):integer;
отдаёт количество гласных в слове w
var
i,k:integer;
begin
k:=0;
for i:=1 to length(w) do
if w[i] in ['а','е','ё','и','о','у','ы','э','ю','я'] then Inc(k);
CountG:=k
end;
var
s,w,wmax:string;
p,k,gmax:integer;
begin
Writeln('Введите текст, деля слова пробелами');
Readln(s);
s:=LowerCase(s);
p:=1; gmax:=0;
while pgt;0 do begin
GetWord(s,p,w);
k:=CountG(w);;
if gmaxlt;k then begin gmax:=k; wmax:=w end
end;
if gmaxgt;0 then Writeln('В слове "',wmax,'" максимум гласных, одинаковый ',gmax)
else Writeln('Во введенной строке гласных букв не найдено')
end.
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов