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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2011, 00:47   #1
v.v.veter
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 16
Вопрос повторение слов в txt файле

Суть проблемы такова. Нужно в таблицу записать слова и количество их повторений в файле txt. Слова берутся не менее 3 символа,все слова разделены минимум одним пробелом. Примерно так должно выглядеть в конечном итоге:

слово кол-сво повторений

стол 54
стул 32
пол 5

Написать нужно на Delphi.
P.S. приведите пример,или может встречали уже подобное, накройняк чем реализовывать хоть. Заранее благодарен.
v.v.veter вне форума Ответить с цитированием
Старый 16.05.2011, 09:56   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

в Delphi ?
Дык проще паренной репы!

если порядок не важен, то:
создаёте объект типа TSTringList (var TS : TSTringList; ... TS := TSTringList.Create();
Грузите в STringList ( TS.LoadFromFile('имя_файла.txt')
устанавливаете символ разделитель - пробел.
Потом сортируете методом Sort ( TS.Sort )
запоминаете текущее значение.
в цикле по всем элементам (словам) пока значение запомненное совпадает с текущим - увеличиваем счётчик.
Если не равно - выводим слово, счётчик, запоминаем новое слово и счётчик устанавливаем в 1.

всё.

вот готовая программа (целиком!)
Код:
procedure TForm1.Button1Click(Sender: TObject);
var TS : TStringList;
    s, OneWord : string;
    i, Cnt : integer;
begin
   TS := TStringList.Create;
   TS.Delimiter := ' ';
   TS.LoadFromFile('C:\t.txt');
   s := TS.Text;
   TS.DelimitedText := s;

   if TS.Count = 0 then begin
     ShowMessage('Вообще ни одного слова нет!');
     Exit;
   end;

   TS.Sort;

   Memo1.Lines.Clear; // подготовим место для формирования отчёта

   // собственно подсчёт
   OneWord := TS.Strings[0];
   Cnt := 1;
   for i := 1 to TS.Count - 1 do
     if AnsiUpperCase(TS.Strings[i]) = AnsiUpperCase(OneWord) then inc(Cnt)
     else begin
       Memo1.Lines.Append(OneWord+' '+InttoStr(Cnt));
       OneWord := TS.Strings[i];
       Cnt := 1;
     end;

   // для последнего слова в списке вывод результата
   Memo1.Lines.Append(OneWord+' '+InttoStr(Cnt));

   FreeAndNil(TS); // освободим память
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.05.2011, 17:06   #3
v.v.veter
Пользователь
 
Регистрация: 16.05.2011
Сообщений: 16
По умолчанию

Спасибо именно то!
v.v.veter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка слов в файле alextm07 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 07.01.2011 01:37
Поиск слов в текстовом файле svt Помощь студентам 8 07.11.2009 19:56
Поиск русских слов в файле getUp Общие вопросы C/C++ 3 23.10.2009 16:20
JPG и TXT в одном файле prizrak1390 Общие вопросы Delphi 9 19.04.2009 18:45