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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2017, 20:43   #1
sokol281
Пользователь
 
Регистрация: 24.10.2017
Сообщений: 15
По умолчанию Сортировка слов в строках Memo

Дорогие программисты, как отсортировать слова во всех строках Memo в алфавитном порядке? Очень нужно. Пытался взять код найденный в сети и адаптировать, но ничего не вышло.
Возможно кто-то знает имеет готовое решение дабы не изобретать велосипед с 0)
Пример.

Есть строки в Memo:

бавария аргентина гон-конг
ананас гладиолус банан

должно получиться:

аргентина бавария гонконг
ананас банан гладиолус


Спасибо на перед!

Последний раз редактировалось sokol281; 25.10.2017 в 20:46.
sokol281 вне форума Ответить с цитированием
Старый 26.10.2017, 02:09   #2
Alexander Gamza
Пользователь
 
Регистрация: 14.06.2017
Сообщений: 31
По умолчанию

Примерно так

Код:
 int iSpace;
 AnsiString aTS;
 TStringList *sort = new TStringList;
	sort->Sorted=true;
     
    for(int i=0; i<Memo1->Lines->Count; i++)
{
      aTS=Memo1->Lines->Strings[i];
       Trim(aTS); //удаляем лишние пробелы, вдруг между словами больше одного
        aTS+=" "; //пробел добавляем для подсчета слов
       //считаем слова
    iSpace=0;
        for(int slen=1; slen<aTS.Length(); slen++)
          if(aTS[slen]==' ') iSpace++;
      
      sort->Clear();
        for(int j=0; j<iSpace-1; j++){ //раскидываем строчку на слова
          sort->Add(aTS.SupString(1, aTS.Pos(" ")-1));
          aTS.Delete(1, aTS.Pos(" "));
         }
       sort->Add(aTS);

   aTS="";
      for(j=0; j<sort->Count; j++)
        aTS+=sort->Strings[j]+" ";

    Memo1->Lines->Strings[i]=aTS;
}
Немного топорный экспромт
Alexander Gamza вне форума Ответить с цитированием
Старый 26.10.2017, 02:42   #3
Alexander Gamza
Пользователь
 
Регистрация: 14.06.2017
Сообщений: 31
По умолчанию

Да, забыл
Код:
//обязательно освободим объект
delete sort
Alexander Gamza вне форума Ответить с цитированием
Старый 26.10.2017, 02:48   #4
sokol281
Пользователь
 
Регистрация: 24.10.2017
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Alexander Gamza Посмотреть сообщение
Да, забыл
Код:
//обязательно освободим объект
delete sort
Компилятор ругается:
[C++ Error] Unit1.cpp(1403): E2316 'SupString' is not a member of 'AnsiString'
http://prntscr.com/h22glk

Бро, спасибо что помогаешь!
sokol281 вне форума Ответить с цитированием
Старый 26.10.2017, 02:50   #5
Alexander Gamza
Пользователь
 
Регистрация: 14.06.2017
Сообщений: 31
По умолчанию

Да, забыл
Код:
//обязательно освободим объект
delete sort
Alexander Gamza вне форума Ответить с цитированием
Старый 26.10.2017, 02:51   #6
Alexander Gamza
Пользователь
 
Регистрация: 14.06.2017
Сообщений: 31
По умолчанию

пардон, SubString
Alexander Gamza вне форума Ответить с цитированием
Старый 26.10.2017, 02:52   #7
sokol281
Пользователь
 
Регистрация: 24.10.2017
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Alexander Gamza Посмотреть сообщение
пардон, SubString
Вот, сам догадался загуглить))

Код:
int iSpace;
 AnsiString aTS;
 TStringList *sort = new TStringList;
	sort->Sorted=true;

    for(int i=0; i<Memo1->Lines->Count; i++)
{
      aTS=Memo1->Lines->Strings[i];
       Trim(aTS); //??????? ?????? ???????, ????? ????? ??????? ?????? ??????
        aTS+=" "; //?????? ????????? ??? ???????? ????
       //??????? ?????
    iSpace=0;
        for(int slen=1; slen<aTS.Length(); slen++)
          if(aTS[slen]==' ') iSpace++;

      sort->Clear();
        for(int j=0; j<iSpace-1; j++){ //??????????? ??????? ?? ?????
          sort->Add(aTS.SubString(1, aTS.Pos(" ")-1));
          aTS.Delete(1, aTS.Pos(" "));
         }
       sort->Add(aTS);

   aTS="";
      for(int j=0; j<sort->Count; j++)
        aTS+=sort->Strings[j]+" ";

    Memo1->Lines->Strings[i]=aTS;

}
sokol281 вне форума Ответить с цитированием
Старый 26.10.2017, 02:53   #8
sokol281
Пользователь
 
Регистрация: 24.10.2017
Сообщений: 15
По умолчанию

куда пихать delete sort?)
sokol281 вне форума Ответить с цитированием
Старый 26.10.2017, 02:54   #9
Alexander Gamza
Пользователь
 
Регистрация: 14.06.2017
Сообщений: 31
По умолчанию

после основного цикла
Alexander Gamza вне форума Ответить с цитированием
Старый 26.10.2017, 02:57   #10
sokol281
Пользователь
 
Регистрация: 24.10.2017
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Alexander Gamza Посмотреть сообщение
после основного цикла
Огромное спасибо дружище! Человечище)))
sokol281 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчитать количество мало буквенных слов во всех строках исходного текста Ben_Franklin Общие вопросы C/C++ 1 15.04.2016 14:58
Поиск слов в Memo Ol'KA Помощь студентам 4 30.11.2012 01:06
Поиск одинаковых слов в строках. zink Паскаль, Turbo Pascal, PascalABC.NET 6 01.11.2011 10:00
Транслитерация отдельных слов в memo lamer811 Общие вопросы Delphi 1 12.04.2011 06:02
поиск в строках Memo Danilka Общие вопросы Delphi 4 24.05.2010 10:10