![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Задание:
Текстовый файл содержит текст на естественном языке. Словом считается: - последовательность подряд идущих букв или цифр; - знак препинания (считается отдельным "словом"); - знак-разделитель, например, пробел (считается отдельным "словом"). Программа должна: - построить словарь, в котором в алфавитном порядке упорядочены все встретившиеся слова (повторяющиеся слова дважды в словарь не включаются); - сосчитать количество повторений каждого слова; - сохранить файл словаря в текстовом формате, включая количество повторений. Но что-то уже на начальном этапе траблы ![]() Код:
procedure TForm1.Button1Click(Sender: TObject); var openD: TOpenDialog; list: TStringList; begin list:= TStringList.Create; list.Sort; openD := TOpenDialog.Create(nil); openD.Filter := 'тесктовый файл|*.txt'; if openD.Execute then begin list.LoadFromFile(openD.FileName); end; list.Sorted := True; list.Duplicates := dupIgnore; List.SaveToFile('словарь.txt'); end; Нужна помощь профи ![]() Последний раз редактировалось Admin, 27.04.2010 в 09:37. |
#2
|
|||
|
|||
![]() И что? Не сортирует? Вообще интересно как отсортировать запятую, тире, точку? Что должно быть раньше? Ну а в список надо бы отдельные слова вставлять. Т.е. Надо перебирать по символам целый файл. Код предоставить не могу. Без компа.
APPLICATION.TERMINATOR Последний раз редактировалось Ama, 27.04.2010 в 06:58. |
#3
|
||||
|
||||
![]() Класная задачка мне понравилось
![]() Вот код: Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, sButton, sDialogs; type TForm1 = class(TForm) sButton1: TsButton; procedure sButton1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} var a,b:set of char; procedure dod(list:TstringList;s:string); begin if list.IndexOfname(s)=-1 then list.Add(s+'=1') else list.Values[s]:=inttostr(strtoint(list.Values[s])+1); end; procedure TForm1.sButton1Click(Sender: TObject); var sOpenDialog1: TOpenDialog; income,list:TstringList; i,j,x1,x2:integer; k:string; begin sOpenDialog1 := TOpenDialog.Create(nil); sOpenDialog1.Filter := 'òåñêòîâûé ôàéë|*.txt'; income:=TstringList.Create; list:=TstringList.Create; a:=['0'..'9','A'..'Z','a'..'z','À'..'ï','ð'..'ÿ']; b:=['!'..'/',':'..'@','\'..#39]; if not sopenDialog1.Execute then exit; income.LoadFromFile(SopenDialog1.FileName); for i:=0 to income.Count-1 do begin k:=''; for j:=2 to length(income[i]) do begin x1:=2; x2:=2; if income[i][j-1]=' ' then x1:=0; if income[i][j-1]in A then x1:=1; if income[i][j-1]in B then x1:=2; if income[i][j]=' ' then x2:=0; if income[i][j]in A then x2:=1; if income[i][j]in B then x2:=2; if x1<>x2 then begin if j=length(income[i]) then begin k:=k+income[i][j-1]; dod(list,k); dod(list,income[i][j]); break; end; k:=k+income[i][j-1]; dod(list,k); k:=''; end else k:=k+income[i][j-1]; end; end; list.Sort; list.SaveToFile(SopenDialog1.FileName); income.Free; list.Free; sOpenDialog1.Free; close; end; end. Не твори зла, и жизнь повернется к тебе передом ![]() Последний раз редактировалось Bars1992, 27.04.2010 в 11:04. |
#4
|
|||
|
|||
![]() Еще один вопросик
как сделать так что бы при выборе диалогового окна он отображал папку где находится программа а не "мои документы"? |
#5
|
|||
|
|||
![]() Цитата:
![]() Код:
sOpenDialog1.InitialDir := GetCurrentDir; |