Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подсчёт кол-ва определенной подстроки в строке 
:(
    Опции темы
Alca
Дата 2.7.2007, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Код

unsigned int iCountDelimiter = 0;

TStringList* pList = new TStringList(); 
pList->LoadFromFile(asFilePath);

for (int i = 0; i < pList->Text.Length(); i ++) {
    if (pList->Text.SubString(i, cbbDelimiter->Text.Length()) == cbbDelimiter->Text) {
        iCountDelimiter ++;
    }
} 

//cbbDelimiter->Text - строка, кол-во которой необходимо найти


Помоги оптимизировать, т.к. кол-во строк в файле в районе 50000-100000,
слишко долго считает...


--------------------
PM WWW ICQ Skype Jabber   Вверх
mr.Anderson
Дата 2.7.2007, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



А она вообще работает? По коду складывается впечатление, что нет.

Вот мой вариант. Не проверял.
Код

AnsiString src = pList->Text;
AnsiString inString = cbbDelimeter->Text;

int count = 0;

do {
 int pos = AnsiPos(  

 if( AnsiPos( inString, src ) )
 ++count;

 src = src.SetLength( i + pos + 1 );
} while( src.Length() > 0 );

Теоретически должно работать. Повторяю, не проверено.

Это сообщение отредактировал(а) mr.Anderson - 2.7.2007, 22:07


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Alca
Дата 2.7.2007, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Не работает


--------------------
PM WWW ICQ Skype Jabber   Вверх
mr.Anderson
Дата 2.7.2007, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Alca, может быть. smile Проверить негде. Ты прежде чем оптимизировать хотя бы работать ее заставь. Золотое правило: сначала программу надо заставить работать, затем заставить ее работать правильно, и только потом заняться оптимизацией.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Grom
Дата 23.9.2008, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 17.8.2006
Где: Москва

Репутация: 1
Всего: 1



может кому пригодится подсчет количества вхождений подстроки в строку
Код

CountPos (AnsiString str, AnsiString substring)
{
 int CountPos;
 CountPos = (strlen(str.c_str()) - strlen((StringReplace(str,substring,"",TReplaceFlags()<<rfReplaceAll)).c_str()))/strlen(substring.c_str());
 return CountPos;
}


использование
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  ShowMessage(CountPos("001001","001"));
}


Это сообщение отредактировал(а) Grom - 23.9.2008, 12:16
--------------------
Хостинг, Vds, Dedicated serve, регистрация доменов (RU,com,net,org) - обращаться в icq.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0516 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.