Этот код ** Паскале отвечает за нахождение самого длинного слова в одной! строчке. Нужно...

0 голосов
90 просмотров

Этот код на Паскале отвечает за нахождение самого длинного слова в одной! строчке. Нужно сделать так, чтобы можно было записать сколько угодно строчек и он нашёл в них самое длинное слово (цикл добавить, по-моему).

var
s,st,smax: string;
i:byte;
BEGIN
readln(s);
if s[length(s)]<>' ' then
s:=s+' ';
st:=''; smax:='';
for i:=1 to length(s) do
if s[i]<>' ' then
st:=st+s[i]
else begin
if length(smax) smax:=st;
st:='';
end;
writeln('Самое длинное слово: ',smax);
writeln('Кол-во букв: ',length(smax));
END.


Информатика (130 баллов) | 90 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

Var
s,st,smax: string;
i:byte;
BEGIN
writeln('Вводите строки. Конец ввода: в начале строки.');
readln(s);
st:=''; smax:='';
while s<>'' do begin
 if s[length(s)]<>' ' then s:=s+' ';
 for i:=1 to length(s) do
  if s[i]<>' ' then st:=st+s[i]
  else begin
  if length(st)>length(smax) then smax:=st;
  st:='';
  end;
 readln(s);
end;
writeln('Самое длинное слово: ',smax);
writeln('Кол-во букв: ',length(smax));
END.

Пример (начало стихотворения “The Road Not Taken”, Роберт Ли Фрост):
Вводите строки. Конец ввода: в начале строки.
Two roads diverged in a yellow wood,
And sorry I could not travel both
And be one traveler, long I stood
And looked down one as far as I could
To where it bent in the undergrowth.

Самое длинное слово: undergrowth.
Кол-во букв: 12

(194k баллов)
0

Великолепно! Спасибо огромное! А не подскажете, как вычислить строчку, в которой самое длинное слово является самым маленьким среди других самых длинных слов?

0

Как это "самое длинное слово является самым маленьким"? Не понимаю.

0 голосов

Так пойдет?

//Pascal
var s, s1, max: string;
begin
  writeln('Введите !exit для выхода.');
  repeat
    write('Введите строку: ');
    readln(s);
    if s <> '!exit' then
    begin
      s := s + ' '; // max:='';
      while Pos(' ', s) > 0 do
      begin
        s1 := Copy(s, 1, Pos(' ', s) - 1);
        Delete(s, 1, Pos(' ', s));
        if Length(s1) > Length(max) then max := s1;
      end;
    end;
  until s = '!exit';
  writeln('Самое длинное слово среди всех строк = ', max);
  writeln('Кол-во букв: ', Length(max));
  readln;
end.

Пример:
Введите !exit для выхода.
Введите строку: test
Введите строку: testtest
Введите строку: testtesttest
Введите строку: 123
Введите строку: 1234
Введите строку: 12345
Введите строку: !exit
Самое длинное слово среди всех строк = testtesttest
Кол-во букв: 12

(9.4k баллов)
0

Да, спасибо огромное!