IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Пересчет индексов записей, Типизированный файл
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Программа создает(или добавляет записи в уже созданный) словарь-типизированный файл из пар слов(слово и его перевод)

Параллельно создаются 2 файла индексов соответствующих алфавитным упорядочениям записей в словаре по первой и второй компоненте.При добавлении очередной записи пересчитываются оба индекса.

Подскажите пожалуйста как сопаставить файлы с индексами с файлом записей и как пересчитать индекс


Заранее благодарен=)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
как сопаставить файлы с индексами с файлом записей и как пересчитать индекс
В смысле? Там же написано, что в то время, как программа создает файл записей,
Цитата
Параллельно создаются 2 файла индексов
Если это делается правильно - ничего пересчитывать не надо, а если неправильно - значит надо исправлять, а не монтировать костыли. Телепатия - не моя сильная сторона, чтоб я мог догадаться, как это все реализовано в коде. Показывай - посмотрим. И задачу заодно озвучь, что тебе НАДО сделать, а не то, что ты ДУМАЕШЬ что надо.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Пока получилось только так:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Word: TEdit;
PWord: TEdit;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;


type
TMyRec = record
Word: String[50];
PWord: string[50];
index1,index2: integer;
end;

TMyRecArray = array[0..49] of TMyRec;

var
Form1: TForm1;
MyArray: TMyRecArray;
P: TMyRec;
F: file of TMyRec;
i:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
for i := 0 to 49 do
begin
if MyArray[i].Word='' then
begin
MyArray[i].Word:=Word.Text;
MyArray[i].PWord:=PWord.Text;
MyArray[i].index1:=i;
MyArray[i].index2:=i;
break;
end;
end;

AssignFile(F,ExtractFilePath(Application.ExeName)+'main.dat');

Rewrite(F);
for i := 0 to 49 do
begin
if MyArray[i].Word<>'' then Write(F, MyArray[i]);
end;
CloseFile(F);

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines.Clear;
AssignFile(F,ExtractFilePath(Application.ExeName)+'main.dat');

reset(F);
while not Eof(F) do
begin
Read(F, P);
Memo1.Lines.Add(IntToStr(P.index1)+ ' ' + P.Word + ' ' + P.PWord + ' ' + IntToStr(P.index2));
end;
CloseFile(F);

end;


end.




А вот как записать тндексы в отдельные файлы и пересчитывать их не знаю wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Еще раз: задача в чем? Просто записать 3 файла, один - слова, второй - индексы упорядочивания поля Word, третий - индексы упорядочивания поля PWord? Или все-таки нечто другое, например, эффективная работа с этими данными?

Ну, допустим, записал эти 3 файла, что дальше будешь с ними делать? Я не зря ведь уточнил:
Цитата
И задачу заодно озвучь, что тебе НАДО сделать, а не то, что ты ДУМАЕШЬ что надо.
, тебе вообще не нужно все то, что ты написал. Достаточно читать данные из файла в список, и сортировать его встроенными методами по любому критерию, когда понадобится, зачем хранить еще 2 лишних файла?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Да я прекрасно понимаю что 2 файла лишних, но задачу такая досталась. 1 файл-слово и его перевод,2-индексы слов, 3-индексы перевода. И когда добавляется новая запись отсортировать по алфавиту и пересчитать индексы. Например:

Было:
1 Арбуз Watermelon 1
2 Вода Water 2
3 Солнце Sun 3


Добавляем:
4 Бомба bomb 4

и получается:
1 Арбуз Watermelon 4
2 Бомба bomb 1
3 Вода Water 3
4 Солнце Sun 2
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 16:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name