Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2013, 18:53   #1
Lankaill
Новичок
Джуниор
 
Регистрация: 25.06.2013
Сообщений: 2
По умолчанию [Pascal]Вывод слов максимальной длинны

Здраствуйте. Нужна помощь. Задание такое: Ввести строку из нескольких слов разделенных пробелом, найти слова максимальной длинны и вывести их на экран. если слов с максимальным кол-вом букв несколько, вывести все. Проблема в том, что паскаль я совершенно не помню, и своего кода представить наверное не смогу, но есть хотя-бы идея:
Скопировать первое слово во вторую строку
удалить слово из первой строки за ненадобностью
в третью строку скопировать следующее слово из первой
удалить его из первой
сравнить длинну второй и третьей строки, и т.д. до конца, в итоге вывести на экран оставшуюся строку с максимальным кол-вом символов. Правда что делать с повторами не придумал. Может кто помочь с кодом?
Lankaill вне форума Ответить с цитированием
Старый 25.06.2013, 19:10   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,865
По умолчанию

Тестировал в Делфи 7:

Код:
var
  S, Wrd: string;
  i, MaxLen: Integer;
  List: array of string;

begin
  ReadLn (S);
  S := S + ' ';
  Wrd := '';
  MaxLen := 1;
  for i := 1 to Length (S) do begin
    if S[i] = ' ' then begin
      if Length (Wrd) > MaxLen then begin
        SetLength (List, 1);
        List[0] := Wrd;
        MaxLen := Length (Wrd);
      end else begin
        if Length (Wrd) = MaxLen then begin
          SetLength (List, Length (List) + 1);
          List[Length(List)-1] := Wrd;
        end; {if}
      end; {if}
      Wrd := '';
    end else Wrd := Wrd + S[i];
  end; {for}
  for i := 0 to Length (List) - 1 do begin
    WriteLn (List[i]);
  end; {for}
  ReadLn;
end.
Arigato вне форума Ответить с цитированием
Старый 25.06.2013, 19:34   #3
Lankaill
Новичок
Джуниор
 
Регистрация: 25.06.2013
Сообщений: 2
По умолчанию

Спасибо. А не могли бы вы пояснить 1 момент-
Код:
S := S + ' ';
  Wrd := '';
Зачем нужно прибавлять к строке пробел? как разделителей их там и так хватает же.
И зачем обнулять строку Wrd, она же изначально пустая, в нее ничего не вводится.
Lankaill вне форума Ответить с цитированием
Старый 25.06.2013, 19:36   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Зачем нужно прибавлять к строке пробел?
чтобы, если вдруг там нет в конце пробела, учесть последнее слово!
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 25.06.2013, 20:25   #5
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,865
По умолчанию

Цитата:
Сообщение от Lankaill Посмотреть сообщение
И зачем обнулять строку Wrd, она же изначально пустая, в нее ничего не вводится.
Изначально она неинициализирована. Считается, что нужно явно инициализировать все переменные перед использованием.
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal.Найти в промежутке от a до b число, с максимальной суммой делителей. I3ECJI0 Помощь студентам 2 16.05.2012 15:39
В квадратной матрице найти столбец с максимальной суммой и строку с максимальной суммой (Pascal) Alexey355 Помощь студентам 1 26.03.2011 14:06
определения длинны всех слов во введенной строке jakof Помощь студентам 2 27.12.2010 14:27
написать программу на c\c++ определения длинны всех слов во введенной строке jakof Помощь студентам 1 27.12.2010 14:16
Вывод слов jakson_sun Общие вопросы C/C++ 1 22.01.2009 17:12