
Вопрос задан 18.05.2020 в 15:59.
Предмет Информатика.
Спрашивает Смирнов Евгений.
Дана строка, содержащая пробелы. Найдите в ней самое длинное слово, выведите это слово и его длину.
Если таких слов несколько, выведите первое из них.

Ответы на вопрос

Отвечает Калашников Салауат.
Procedure GetWord(s:string; var from:integer; var w:string; var len:integer);
{
Ищет в строке s слово, начиная с позиции from.
Если слово w найдено, from будет указывать на его начало,
а в len будет находиться длина эого слова.
если слово не найдено, w='', len=0
Слова раздеяются минимум одним пробелом, за исключением
первого и последнего слова, у которых пробел может
находиться только с одной стороны.
}
var
i,n:integer;
stop:Boolean;
begin
n:=Length(s); i:=from; stop:=false;
while (i<=n) and (not stop) do
if s[i]=' ' then Inc(i) else stop:=true;
if i>n then begin len:=0; w:='' end
else begin
from:=i; stop:=false;
while (i<=n) and (not stop) do
if s[i]<>' ' then Inc(i) else stop:=true;
if i>n then len:=n-from+1 else len:=i-from;
w:=Copy(s,from,len)
end
end;
var
s1,wd,wdmax:string;
ic,L,Lmax:integer;
begin
Write('Введите строку: '); Readln(s1);
ic:=1; Lmax:=0;
repeat
GetWord(s1,ic,wd,L);
if (L>0) and (L>Lmax) then
begin Lmax:=L; wdmax:=wd end;
ic:=ic+L+1
until L=0;
Writeln('Самое длинное слово "',wdmax,'" длины ',Lmax)
end.
Тестовое решение:
Введите строку: Это пример тестовой строки с произвольным числом пробелов.
Самое длинное слово "произвольным" длины 12
{
Ищет в строке s слово, начиная с позиции from.
Если слово w найдено, from будет указывать на его начало,
а в len будет находиться длина эого слова.
если слово не найдено, w='', len=0
Слова раздеяются минимум одним пробелом, за исключением
первого и последнего слова, у которых пробел может
находиться только с одной стороны.
}
var
i,n:integer;
stop:Boolean;
begin
n:=Length(s); i:=from; stop:=false;
while (i<=n) and (not stop) do
if s[i]=' ' then Inc(i) else stop:=true;
if i>n then begin len:=0; w:='' end
else begin
from:=i; stop:=false;
while (i<=n) and (not stop) do
if s[i]<>' ' then Inc(i) else stop:=true;
if i>n then len:=n-from+1 else len:=i-from;
w:=Copy(s,from,len)
end
end;
var
s1,wd,wdmax:string;
ic,L,Lmax:integer;
begin
Write('Введите строку: '); Readln(s1);
ic:=1; Lmax:=0;
repeat
GetWord(s1,ic,wd,L);
if (L>0) and (L>Lmax) then
begin Lmax:=L; wdmax:=wd end;
ic:=ic+L+1
until L=0;
Writeln('Самое длинное слово "',wdmax,'" длины ',Lmax)
end.
Тестовое решение:
Введите строку: Это пример тестовой строки с произвольным числом пробелов.
Самое длинное слово "произвольным" длины 12


Топ вопросов за вчера в категории Информатика

Информатика 562

Информатика 404

Информатика 31

Информатика 76

Информатика 16

Информатика 41

Информатика 31
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili