Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ ФАЙЛЫ - помогите пожалуста

Автор: sds 23.04.2007 17:11

Пожалуста помогите очень нужно. Скоро зачеты
Создайте файл Каталог книг. Занесите в отдельный файл все произведения заданного пользователем автора. Структура записи файла Каталог книг: автор (40 знаков), название (80 знаков), год издания (4 знака), специальность (40 знаков). Записи упорядочены по фамилиям автора.

Очень нужен текст программы. ЗАРАНЕЕ ОГРОМНОЕ СПАСИБО.

Автор: sds 23.04.2007 23:30

Ну хоть чем-нибудь помогите

Автор: klem4 23.04.2007 23:35

Сам-то пробовал делать ? Если да, то выкладывай что есть, посмотрим, если нет, скажи что конкретно вызывает затруднение. Если "я вообще не знаю с чего начать", тебе сюда: http://forum.pascal.net.ru/index.php?showtopic=9198


Автор: sds 24.04.2007 3:04

Так это вроде не запись а в большей степени работа с файлами. Затруднение вызывает упорядочить по фамилиям авторов

Автор: volvo 24.04.2007 3:12

Цитата
Так это вроде не запись а в большей степени работа с файлами.
Хотелось бы уточнить, работа с типизированными файлами, что неотделимо от работы с записями...

Насчет
Цитата
упорядочить по фамилиям авторов
- никаких сложностей возникать не должно, есть 2 пути:
1) работать с данными через массив (т.е. считать все из файла в массив, его отсортировать, КАК это можно сделать по значению любого поля - есть тема еще на этой странице, поднимался вопрос совсем недавно), и записать обратно в файл

2) сортировать напрямую содержимое файла (не рекомендуется, ибо работать будет медленнее, да и некрасиво это) - тоже не вижу проблем: типизированные файлы - это файлы со случайным доступом, т.е. алгоритм будет такой же, как и при сортировке массива, но с позиционированием в файле через Seek...

Ну, или см. сортировку Неймана.

Автор: -sds- 27.04.2007 2:11

Я тут кое-что сделал . Может проверите,мне кажется не совсем соответствует заданию

program q;
type cat=record
avtor:string[40];
nazv:string[80];
god:string[4];
spec:string[40];
end;
var s1,s2:string;
i,n:integer;
f1,f2:text;
d:array [1..100] of cat;
begin writeln('vvedite n');
readln(n);
writeln('vvedite put k 1-my faily');
readln(s1);
assign(f1,s1);
writeln('vvedite put k 2-my faily');
readln(s2);
assign(f2,s2);
rewrite(f1);
writeln('вводите авторов в алфавитном порядке');
for I:=1 to n do
with d[i] do
begin writeln('vvesti avtora');
readln(avtor);
writeln(f1,avtor);
writeln('vvesti nazvanie');
readln(nazv);
writeln(f1,nazv);
writeln('vvesti god');
readln(god);
writeln(f1,god);
writeln('vvesti special');
readln(spec);
writeln(f1,spec);
end;
close(f1);
reset(f1);
rewrite(f2);
writeln('введите автора для поиска');
readln(s1);
while not(eof(f1)) do
for i:=1 to n do
begin readln(f1,s2);
if s1=s2 then writeln(f2,d[i].nazv);
end;
close(f1);
close(f2);
end.


Автор: -sds- 22.05.2007 3:09

Как преобразовать данную прогу чтобы записи были упорядочены по фамилии автора?????

Автор: мисс_граффити 22.05.2007 5:19

Цитата
writeln('вводите авторов в алфавитном порядке');

по-моему, ты уже возложил ответственность за это на пользователя...

Автор: -sds- 22.05.2007 13:13

Ну хорошо:
program q;
type cat=record
avtor:string[40];
nazv:string[80];
god:string[4];
spec:string[40];
end;
var s1,s2:string;
i,n:integer;
f1,f2:text;
d:array [1..100] of cat;
begin writeln('vvedite n');
readln(n);
writeln('vvedite put k 1-my faily');
readln(s1);
assign(f1,s1);
writeln('vvedite put k 2-my faily');
readln(s2);
assign(f2,s2);
rewrite(f1);
for I:=1 to n do
with d[i] do
begin writeln('vvesti avtora');
readln(avtor);
writeln(f1,avtor);
writeln('vvesti nazvanie');
readln(nazv);
writeln(f1,nazv);
writeln('vvesti god');
readln(god);
writeln(f1,god);
writeln('vvesti special');
readln(spec);
writeln(f1,spec);
end;
close(f1);
reset(f1);
rewrite(f2);
writeln('введите автора для поиска');
readln(s1);
while not(eof(f1)) do
for i:=1 to n do
begin readln(f1,s2);
if s1=s2 then writeln(f2,d[i].nazv);
end;
close(f1);
close(f2);
end.
Как тогда упорядочить по фамилиям?????


Автор: Ozzя 22.05.2007 14:27

Давно-давно, когда я решал подобную задачу на сортировку записей, то делал так:
Склеивал поля записи в одну строку, сортировал массив строк (любым способом), затем обратно их расклеивал.

Автор: мисс_граффити 22.05.2007 19:47

Во-первых, заключи в теги код программ.
Во-вторых, ищи по форуму. Сортировки записей много раз выкладывались (как в файле, так и в массиве)

Автор: -sds- 24.05.2007 22:56

Чето я вообще ничего не могу найти, может дадите ссылочку?

Автор: Ozzя 25.05.2007 10:57

http://forum.pascal.net.ru/index.php?showtopic=17434&hl=Сортировки+записей