• Дана строка, состоящая из русских слов, разделенных пробелом. Определить слово, с наибольшим количеством гласных букв, ребят помогииитее паскаль

Ответы 1

  • procedure GetWord(s:string; var p:integer; var w:string; delim:string:=' ');{ Получает в w слово из строки s, которое начинается не ранее позиции p. Возвращает новое значение p, указывающее на первый разделитель delim, который следует за найденным словом или 0, если такой разделитель не найден. По умолчанию слова разделяются не менее чем одним пробелом}var  i,n:integer;  fBreak:boolean; { флажок для прерывания циклов }begin  n:=Length(s); fBreak:=False;  {ищем первый символ, отличный от разделителя - начало слова }  while ((p<=n) and (not fBreak)) do    if (p=n) or (s[p]<>delim) then fBreak:=True    else Inc(p);  { ищем очередной разделитель - конец слова }  if p<n then begin    i:=p; Inc(p); fBreak:=False;    while (p<=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 p>=n then p:=0end;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:=kend;var  s,w,wmax:string;  p,k,gmax:integer;begin  Writeln('Введите текст, разделяя слова пробелами');  Readln(s);  s:=LowerCase(s);  p:=1; gmax:=0;  while p>0 do begin    GetWord(s,p,w);    k:=CountG(w);;    if gmax<k then begin gmax:=k; wmax:=w end  end;  if gmax>0 then Writeln('В слове "',wmax,'" максимум гласных, равный ',gmax)  else Writeln('Во введенной строке гласных букв не найдено')end.
    • Автор:

      malachi15
    • 5 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years