Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Типиз. файл

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

Код:
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 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.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.nazv_kn);
end;
readln;
end.



какие тут ошибки ?
И как оформить с помощью процедур ?
6.3K
29 декабря 2005 года
Neutral
76 / / 13.12.2005
Я немного подправил твой код, теперь должно работать нормально. Думаю разберешься, хотя если будут вопросы спрашивай. Удачи!

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

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

procedure create_file;
var vibor:byte;
begin
rewrite(f);
writeln('Введите данные о книге');
writeln('-----------------------------');
vibor:=1;
n:=0;
while vibor=1 do
begin
inc(n);
with kn[n] do begin
writeln(' Введите номер УДК ');
readln(udk);
writeln('Введите Фамилию');
readln(fam);
writeln(' Введите Иницалы автора ');
readln(io);
writeln('Введите название книги');
readln(nazv_kn);
writeln('Введите год издания');
readln(god_izd);
writeln('Введите кол-во экземпляров данной книги');
readln(kol);
writeln('1 - continue; 0-exit'); readln(vibor);
end;
write(f,kn[n]);
end;
close(f);
end;

procedure read_file;
var i,j,k:integer;
begin
reset(f);
n:=0;
while not eof(f) do
begin
read(f,temp);
if temp.kol>3 then begin inc(n); kn[n]:=temp; end;
end;

for i:=1 to n do
begin
for j:=i+1 to n do
begin

k:=1;
while (k<=length(kn.nazv_kn[k])) and (k<=length(kn[j].nazv_kn[k])) and (kn.nazv_kn[k]=kn[j].nazv_kn[k]) do inc(k);

if kn.nazv_kn[k]>kn[j].nazv_kn[k] then
begin
temp:=kn; kn:=kn[j]; kn[j]:=temp;
end;
end;
end;

for i:=1 to n do writeln(kn.nazv_kn);
close(f);
end;

begin
assign(f,'new.dat');
writeln('1- создать новый, 2 - открыть, 0-exit');
readln(vybor);
while vybor<>0 do
begin
if vybor=1 then create_file else read_file;
writeln('1- создать новый, 2 - открыть, 0-exit');
readln(vybor);
end;
end.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог