Помощь - Поиск - Пользователи - Календарь
Полная версия: Типизированный файл
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Merlin
Условие задачи :

Создать типизированный файл, запись которого имеет следующую структуру: номер УДК, фамилию и инициалы автора, название книги, год издания, количество экземпляров данной книги в библиотеке. Вывести на экран в алфавитном порядке название книг, количество экземпляров которых больше 3.

Создание и обработку файла оформить в виде подпрограмм.



Program tip;
const
n=20;
type
knigi = record
fam, io, nazv_kn : string[20] ;
udk: real;
god_izd, kol : integer;
end;

Var
kn: array[1..n] of knigi;
i,j: integer;
temp:integer;

Begin
writeln('Введите данные о книге');
writeln('-----------------------------');
for i:=1 to n do
with kn[i] do begin
writeln(' Введите номер УДК ');
readln(n_UDK);
writeln('Введите Фамилию');
readln(fam);
writeln(' Введите Иницалы автора ');
readln(io);
writeln('Введите название книги');
readln(nazv_kn);
writeln('Введите год издания');
readln(god_izd);
writeln('Введите кол-во экземпляров данной книги');
readln(kol);
end;

if kn[i].kol > 3 then

for i:=2 to n do
for j:=n downto i do
if kn[j-1].nazv_kn > mass[j].nazv_kn then begin
temp:=kn[j-1];
kn[j-1]:=kn[j];
kn[j]:=temp;
end;
for i:=1 to n do
writeln (kn[i].nazv_kn);
end;
readln;
end.




Что то у меня с сортировкой "название книги" по алфавиту проблемы... blink.gif , не знаю что делать
Остальное отладить я смогу, а в сортировке ошибка вылазит


И ещё вопрос: как переделать ввод массива в подпрограмму ?
volvo
Цитата
в сортировке ошибка вылазит

Var
...
temp: knigi; { <--- А не Integer, как у тебя !!! }
Merlin
Спасибо за исправление smile.gif

Цитата

Создание и обработку файла оформить в виде подпрограмм


Т.е. надо оформить в иде процедур и функций ?
Что нужно для этого переделать в программе ? blink.gif
Merlin

Program tip;
const
n=20;
type
knigi = record
fam, io, nazv_kn : string[20] ;
udk: real;
god_izd, kol : integer;
end;

var

f: file of knigi;
kn: knigi;
vybor: byte;
temp:knigi;
i,j:integer;


begin

write('1- создать новый, 0 - открыть');readln(vybor);
assign(f,'имя_файла.dat');

if vybor <>0 then
begin
{создать новый файл}
rewrite(f);

writeln('Введите данные о книге');
writeln('-----------------------------');
for i:=1 to n do
begin
with kn[i] do begin
writeln(' Введите номер УДК ');
readln(n_UDK);
writeln('Введите Фамилию');
readln(fam);
writeln(' Введите Иницалы автора ');
readln(io);
writeln('Введите название книги');
readln(nazv_kn);
writeln('Введите год издания');
readln(god_izd);
writeln('Введите кол-во экземпляров данной книги');
readln(kol);
end;
write(f,kn);
end;
close(f);
end;
reset(f);


if kn[i].kol > 3 then

for i:=2 to n do
for j:=n downto i do
if kn[j-1].nazv_kn > mass[j].nazv_kn then begin
temp:=kn[j-1];
kn[j-1]:=kn[j];
kn[j]:=temp;
end;
for i:=1 to n do
writeln (kn[i].nazv_kn);
end;
readln;
end.



Я правильно сделал задачу ?
Запутался с типизированным файлом, может я что то не так объявляю ?
volvo
У тебя ошибки, или что? В чем вопрос?

Почему вы все думаете, что здесь сидят телепаты?
Merlin
У меня условие : создать типизированный файл..

Я правильно его объявляю ?

Или надо делать так, как я написал программу с массивом ,, Пост : 16.12.2005 0:45 ?
klem4
Да, файл который ты создал - типизированный, а чтобы таких вопросов больше не возникало - F A Q : ФАЙЛЫ
Merlin
А как мне в этой проге сделать ввод массива и сортировку , через процедуру ?

А то я не могу разобраться в этих локальных и глобальных переменных...
Может хоть пример какой ..
Merlin

Program tip;
const
n=20;
type
knigi = record
fam, io, nazv_kn : string[20] ;
udk: real;
god_izd, kol : integer;
end;

var

f: file of knigi;
kn_1: knigi;
vybor: byte;
temp:knigi;
i,j:integer;
kn: array [1..n] of knigi;


begin

write('1- создать новый, 0 - открыть');readln(vybor);
assign(f,'fd.dat');

if vybor <>0 then
begin
{создать новый файл}
rewrite(f);

writeln('Введите данные о книге');
writeln('-----------------------------');
for i:=1 to n do
begin
with kn_1 do begin
writeln(' Введите номер УДК ');
readln(n_UDK);
writeln('Введите Фамилию');
readln(fam);
writeln(' Введите Иницалы автора ');
readln(io);
writeln('Введите название книги');
readln(nazv_kn);
writeln('Введите год издания');
readln(god_izd);
writeln('Введите кол-во экземпляров данной книги');
readln(kol);
end;
write(f,kn_1);
end;
close(f);
end;
reset(f);



for i:=2 to n do
for j:=n downto i do
if kn[j-1].nazv_kn > kn[j].nazv_kn then begin
temp:=kn[j-1];
kn[j-1]:=kn[j];
kn[j]:=temp;
end;
if kn[i].kol > 3 then
for i:=1 to n do
writeln (kn[i].nazv_kn);
end;
readln;
end.



Где у меня ошибки ??
Подскажите как вывести результат на экран и сделать сортировку без использования массива,
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.