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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> СЛОЖНАЯ ЗАДАЧА:Типизированные файлы-НУЖНА ПОМОЩЬ!, добавление записей, их сортировка и т.д.
сообщение
Сообщение #1


Новичок
*

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

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


Плиз!
Помогите доделать до конца...
2/3 задачи уже решил - и застрял...
в общем, вот она, задача:
Цитата
Подготовить список из N наименований товаров. Конкретное значение N указано в варианте. Информация о каждом товаре содержит:
1. Название товара.
2. Цену.
3. Год выпуска.
4. Количество.
Список должен быть упорядочен по одному из параметров, указанных в конкретном варианте. Сведения по каждому товару необходимо представить в виде записи.
Разработать программу, которая заносит во внешний файл записи упорядоченного списка, и программу, которая добавляет в сформированный внешний файл данные об М товарах, при этом, не нарушая упорядоченности исходного файла. Если среди добавляемых товаров встречается товар, сведения о котором в файле уже есть, то необходимо их обновить, т. е. старую запись исключить.
Варианты задания
7. Товары упорядочены по неубыванию цены, N=13, М=4.

Не могу воплотить в жизнь последний этап задачи, т.е. добавлять в файл записи, не нарушая при этом упорядоченности файла и обновляя информацию об уже существующих товарах... Вот что у меня пока получилось:
Исходный код
uses crt;
type TOVAR=record
NAZV:string;
ZENA:integer;
GOD_VIP:integer;
KOL:integer;
end;
const N=13;
M=4;
var F1,F2:file of TOVAR;
S1,S2:TOVAR;
I,K,J:integer;
begin
{################################-VVOD_DANNIH-##############################}
assign(F1,'tovary.dat');
rewrite(F1);
for I:=1 to N do
begin
with S1 do
begin
clrscr;
writeln;
writeln('-------------------------------------------------------');
writeln('Vvedite dannie ',I,'-go tovara:');
writeln('-------------------------------------------------------');
writeln('Vvedite nazvanie:');
readln(NAZV);
writeln('Vvedite zenu:');
readln(ZENA);
writeln('Vvedite god vipuska:');
readln(GOD_VIP);
writeln('Vvedite kolichestvo:');
readln(KOL);
end;
write(F1,S1);
end;
close(F1);
{@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-SORTIROVKA-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@}
assign(F1,'tovary.dat');
reset(F1);
K:=filesize(F1);
seek(F1,0);
for I:=K-1 downto 1 do
for J:=1 to K-2 do
begin
seek(F1,J);
read(F1,S1);
seek(F1,J+1);
read(F1,S2);
if S1.ZENA>S2.ZENA then
begin
seek(F1,J);
write(F1,S2);
seek(F1,J+1);
write(F1,S1);
end;
end;
close(F1);
{@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-VIVOD_DANNIH_1-@@@@@@@@@@@@@@@@@@@@@@@@@@@@}
assign(F1,'tovary.dat');
reset(F1);
clrscr;
I:=1;
while (not EOF(F1)) do
begin
read(F1,S1);
with S1 do
begin
writeln;
writeln('-------------------------------------------------------');
writeln('Dannie ',I,'-go tovara:');
writeln('-------------------------------------------------------');
writeln('Nazvanie: ',NAZV);
writeln('Zena: ',ZENA);
writeln('God vipuska: ',GOD_VIP);
writeln('Kolichestvo: ',KOL);
Inc(I);
end;
end;
close(F1);
{###########-DOBAVLENIE_DANNIH_BEZ_NARUSHENIYA_UPORYADOCHENNOSTI-###########}
{ВОТ ЗДЕСЬ-ТО Я И НЕ ЗНАЮ, ЧТО ДЕЛАТЬ...}
end.

сложность состоит в том, что в файл нужно добавлять новые записи уже в нужное место...
МОЖЕТ, МОЖНО КАК-НИБУДЬ РАЗДВИНУТЬ ЗАПИСИ В ФАЙЛЕ И МЕЖДУ НИМИ ВСТАВИТЬ НОВУЮ ЗАПИСЬ?


--------------------
Я не люблю, когда мне лезут в душу,
Тем более, когда в нее плюют...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
LLIRIKS   СЛОЖНАЯ ЗАДАЧА:Типизированные файлы-НУЖНА ПОМОЩЬ!   19.12.2004 5:34
volvo   Ты имеешь в виду это? ... fp := filepos(f…   19.12.2004 6:04
LLIRIKS   ОГРОМНОЕ СТУДЕНЧЕСКОЕ СПАСИБО! дальше уже все …   19.12.2004 6:30
LLIRIKS   Хотя нет... вру... возникает еще вот такая проблем…   19.12.2004 7:46
volvo   LLIRIKS А тем же самым способом, что я описал выш…   19.12.2004 15:08
LLIRIKS   А можно поподробней? :unsure:   19.12.2004 17:54
volvo   fp := filepos(f); { запоминаешь текущую позицию в…   19.12.2004 18:29
LLIRIKS   а почему curr:=filesize(f)-1 ? здесь ведь указател…   19.12.2004 19:10
volvo   LLIRIKS Ты не понял, я не привел саму запись пуст…   19.12.2004 19:29
LLIRIKS   вот, написал: uses crt; type TOVAR=record …   19.12.2004 20:50
volvo   LLIRIKS Ты просто пытаешься читать за концом файл…   19.12.2004 21:09
LLIRIKS   работает, но опять не до конца... если добавлять з…   19.12.2004 21:29
LLIRIKS   ПОМОГИТЕ, плиз!.. осталось совсем немного - ис…   19.12.2004 23:51
volvo   LLIRIKS Секунду, ты в 2-х местах поменял то, что …   20.12.2004 0:00
LLIRIKS   да... если добавлять записи с неповторяющимися наз…   20.12.2004 0:04
LLIRIKS   с нулевой записью я разобрался... фуф... но вот 2-…   20.12.2004 0:23
LLIRIKS   Выручайте, плз! завтра уже сдавать... где у ме…   20.12.2004 1:54
buy cialis online canadian pharm   Acheter Viagra Femme   4.12.2021 4:31


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

 





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