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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2009, 18:50   #1
сер4ей
Пользователь
 
Регистрация: 27.02.2009
Сообщений: 18
По умолчанию заменить самое длинное слово, на самое короткое в Delphi

Заменить самое длинное слово, на самое короткое. Я не понимаю как работать со строками , даже набросков нет. Там суть в том ,что надо в Edit ввести ,где то 3 слова и программа ,и этих слов должна выбрать самое длинное заменив его на самое короткое из этих 3-х. Вот в чем весь заморот....
сер4ей вне форума Ответить с цитированием
Старый 03.03.2009, 19:08   #2
NeshSoft
Максим Николаев
Форумчанин
 
Аватар для NeshSoft
 
Регистрация: 15.02.2009
Сообщений: 170
По умолчанию

строковые переменные s1,s2,s3, сначало сохраняешь слова в эти переменные по нажатию кнопки, чтобы каждый раз сохранять в новую переменную - нужно использовать глобальную переменную с номером текущего ввода.

потом просто:
Код:
if (length(s1)>length(s2))and (length(s1)>length(s3)) then //s1 - самая длинная строка
    if (length(s2)>length(s3)) then s1:=s3 else s1:=s2; // поиск самой короткой строки
и так 3 раза - для каждой строки

Если строк больше 3-х - то лучше использовать массив строк.
NeshSoft. Программирование на заказ для студентов. Delphi/Pascal. Подробнее на сайте neshsoft.narod.ru
NeshSoft вне форума Ответить с цитированием
Старый 04.03.2009, 22:11   #3
сер4ей
Пользователь
 
Регистрация: 27.02.2009
Сообщений: 18
По умолчанию

спасибо, попробую

мне нужно что бы все в одном Edite было

Последний раз редактировалось Stilet; 05.03.2009 в 08:18.
сер4ей вне форума Ответить с цитированием
Старый 05.03.2009, 08:21   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

В цикле проходиш по этим словам, можно для удобство их в массив загнать, и определяеш у какого элемента массива самое длинное Length() и самое короткое, запомигаеш их а потом местами меняеш.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.03.2009, 15:35   #5
NeshSoft
Максим Николаев
Форумчанин
 
Аватар для NeshSoft
 
Регистрация: 15.02.2009
Сообщений: 170
По умолчанию

Цитата:
Сообщение от сер4ей Посмотреть сообщение
мне нужно что бы все в одном Edite было
Т.е. слова через пробел в одном Edite? Тогда нужно сначало разделить строку на 3 слова. В цикле ищем пробел, все, что до пробела - сохраняем в строку s1, нашли пробел - следующую часть до следующего пробела - сохраняем в s2, ну и остаток строки - в s3.
NeshSoft. Программирование на заказ для студентов. Delphi/Pascal. Подробнее на сайте neshsoft.narod.ru
NeshSoft вне форума Ответить с цитированием
Старый 05.03.2009, 18:40   #6
NieL
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 116
По умолчанию

Можно сделать с использованием регулярных выражений, вот так, например: (P.S. Но в данном случае нужно экспортировать (Project/Import Type Library) библиотеку vbscript.dll, которая лежит в папке C:\WINDOWS\System32)

Код:
procedure Tfrm_Test.Button2Click(Sender: TObject);

  function Replace(const s: string): string;
  var
    MC: MatchCollection;
    _s, _l, CurS: string;
    i, L: Integer;
    RegExp: TRegExp;
  begin
    RegExp := TRegExp.Create(nil);
    with RegExp do
      try
        Pattern := '\s*(\w+).*?';
        Global := True;
        MC := RegExp.Execute(s) as MatchCollection;
        _s := ((MC[0] as Match).SubMatches as SubMatches)[0];
        _l := _s;
        for i := 0 to MC.Count - 1 do
        begin
          CurS := ((MC[i] as Match).SubMatches as SubMatches)[0];
          L := Length(CurS);
          if L > Length(_l) then
            _l := CurS;
          if L < Length(_s) then
            _s := CurS;
        end  ;
        Result := StringReplace(s, _l, _s, [rfReplaceAll]);
      finally
        Free;
      end;
  end;

begin
  ShowMessage(Replace('ab, abc, a, abcd, cba'));
end;
NieL вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести самое длинное слово (Си) ManInBlack Помощь студентам 10 19.01.2009 00:17
в текстовом файле в каждой строке наити самое длинное слово Storm Помощь студентам 4 04.06.2008 15:56
Определить сколько раз встречается в тексте самое короткое слово - Delphi 7 Леди Уинтер Помощь студентам 3 08.01.2008 17:56
С++ Найти самое длинное слово строки k0z7_g0b1in Общие вопросы C/C++ 3 22.04.2007 17:37