Помощь - Поиск - Пользователи - Календарь
Полная версия: ФАЙЛЫ - помогите пожалуста
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
sds
Пожалуста помогите очень нужно. Скоро зачеты
Создайте файл Каталог книг. Занесите в отдельный файл все произведения заданного пользователем автора. Структура записи файла Каталог книг: автор (40 знаков), название (80 знаков), год издания (4 знака), специальность (40 знаков). Записи упорядочены по фамилиям автора.

Очень нужен текст программы. ЗАРАНЕЕ ОГРОМНОЕ СПАСИБО.
sds
Ну хоть чем-нибудь помогите
klem4
Сам-то пробовал делать ? Если да, то выкладывай что есть, посмотрим, если нет, скажи что конкретно вызывает затруднение. Если "я вообще не знаю с чего начать", тебе сюда: Записи. Record.

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

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

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

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

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-
Как преобразовать данную прогу чтобы записи были упорядочены по фамилии автора?????
мисс_граффити
Цитата
writeln('вводите авторов в алфавитном порядке');

по-моему, ты уже возложил ответственность за это на пользователя...
-sds-
Ну хорошо:
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я
Давно-давно, когда я решал подобную задачу на сортировку записей, то делал так:
Склеивал поля записи в одну строку, сортировал массив строк (любым способом), затем обратно их расклеивал.
мисс_граффити
Во-первых, заключи в теги код программ.
Во-вторых, ищи по форуму. Сортировки записей много раз выкладывались (как в файле, так и в массиве)
-sds-
Чето я вообще ничего не могу найти, может дадите ссылочку?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.