Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Дана строка, состоящая из слов, отделенных друг


Автор: manhant32 21.12.2014, 12:52
Дана строка, состоящая из слов, отделенных друг от друга одним или 
несколькими разделителями (пробелы,точки,запятые, скобки и пр.). Вывести 
на экран порядковый номер слова минимальной длины. 

Заранее спасибо !!!

Автор: Данкинг 21.12.2014, 15:27
Сначала следует чётко определить, какие бывают разделители. "и пр." здесь не прокатит.

Автор: Illusion Dolphin 21.12.2014, 15:45
Код

uses
  Generics.Collections, Generics.Defaults;

var
  S: string;
  Words, SortedWords: TList<string>;
  Index, WordNumber: Integer;
begin
  S := 'This is a long string with some content';

  Words := TList<string>.Create;
  SortedWords := TList<string>.Create;
  try
    //пробелы,точки,запятые, скобки
    Words.AddRange(S.Split([' ', '.', ',', '(', ')'], TStringSplitOptions.ExcludeEmpty));
    SortedWords.AddRange(Words);
    SortedWords.Sort(TComparer<string>.Construct(
      function (const Left, Right: string): Integer
      begin
        Result := Length(Left) - Length(Right);
      end
    ));

    WordNumber := Words.IndexOf(SortedWords[0]) + 1;
    ShowMessage(IntToStr(WordNumber));
  finally
    Words.Free;
    SortedWords.Free;
  end;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)