![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
|||
|
|||
|
И что? Не сортирует? Вообще интересно как отсортировать запятую, тире, точку? Что должно быть раньше? Ну а в список надо бы отдельные слова вставлять. Т.е. Надо перебирать по символам целый файл. Код предоставить не могу. Без компа.
Последний раз редактировалось 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; |