Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2014, 17:24   #1
MurkyMargosha
Пользователь
 
Регистрация: 21.10.2013
Сообщений: 13
По умолчанию Записи

На паскале:
Разработать базу данных "Научно – техническая библиотека" (Фамилия, И. О. автора книги, Название книги, город, издательство, год выпуска, тематика). Получить данные о книгах по заданной тематике.

(Обработка записей должна быть реализована в подпрограммах. Исходные записи задаать в главной программе и сохранить в типизиро-ванном файле. Имя файла ввести с клавиатуры в главной программе. Результат обработки вывести в главной программе.)

Код:
program pr13;
uses crt;
type Tsotr = record
     fam:string;
     naz:string;
     gor:string;
     izd:string;
     god:char;
     tem:string
     end;
TsotrAr = array[1..20] of Tsotr;
procedure proc(sotr: TsotrAr; nzap: byte;
          var mans: TsotrAr; var nman: byte);
var i, j: byte;
    zap: Tsotr;
zbegin
j:= 0;
for i:= 1 to nzap do
    if sotr[i].tem = 'technika' then begin
       inc(j);
       zap:= sotr[i];
       with mans[j] do begin
	     fam:=zap.fam;
	     naz:=zap.naz;
	     gor:=zap.gor;
	     izd:=zap.izd;
	     god:=zap.god;
	     tem:=zap.tem
       end
    end;
nman:= j
end;
var
i, ns, nm: byte;
sot: TsotrAr;
man: TsotrAr;
fl: file of Tsotr;
s: string;
begin clrscr;
write('Wwegite name faila -> ');
readln(s);
assign(fl, s);
rewrite(fl);
i:=1;
while true do begin
     with sot[i] do begin
	  writeln(i,' familia:');
	  write('Wwedite tematiku -> '); readln(tem);
	  if tem = 'z' then break;
	  write('Wwedite fam -> ');
	  readln(fam);
	  write('Wwedite nazwanie -> ');
	  readln(naz);
          write('Wwedite gorod -> ');
	  readln(gor);
          write('Wwedite izdanie -> ');
	  readln(izd);
          write('Wwedite god -> ');
	  readln(god);
          write(fl, sot[i]);
	  inc(i)
     end;
end;
ns:= i;
proc(sot, ns, man, nm);
writeln(':');
writeln('  fam    naz    gor   izd    god    tem   ');
writeln('==========================================');
for i:= 1 to nm do
    with man[i] do
         writeln(fam:10,naz:10,gor:7,izd:3,god:6,tem:4);
close(fl);
readkey;
end.
Выдает ошибку 86, не понимаю что не так( помогите запустить прогу
MurkyMargosha вне форума Ответить с цитированием
Старый 04.05.2014, 23:02   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Паскаль у Вас какой?
Если не TurboPascal, тогда рекомендую заменить описание записи, везде, где string, заменить на конкретную длину (например,
Код:
type Tsotr = record
     fam:string[40];
     naz:string[40];
     gor:string[30];
и т.д.

ну и что такое:
Цитата:
Код:
god:char;
думаете, что для года хватит одной буквы(одного символа)?!!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Записи. Записи с вариантами. Turbo Pascal Marksman_SwAt Помощь студентам 7 07.05.2014 19:27
Машина Тьюринга: Постройте функциональную схему машины, реализующей переход от десятичной записи числа n к десятичной записи (n-1) Елешечка Помощь студентам 0 02.04.2014 21:43
Как обновить последние записи за определенный срок не обновляя не законченные записи? SotGEGDS SQL, базы данных 3 11.06.2013 14:39
Удалить записи из таблицы, если дата в записи старше 30 дней Aleksandr БД в Delphi 10 28.03.2013 21:33
Оцените математической формулой, насколько больше цифр в двоичной записи большого числа, чем в его десятичной записи. Анюта.Хом Помощь студентам 1 02.12.2011 23:13