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

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

Форум «Всё о Паскале» _ Задачи _ База данных в типизированном файле

Автор: alexmilko 7.06.2007 18:06

Ребята!!! Требуется помощь!!!! Программу я написал, но в ней есть ошибка(не могу сообразить, как ее исправить). Требуется создать типизированный файл записи, содержащий базу: название страны, ее площадь, число населения. Базу создал, записал в файл 'strani.dat'. Теперь требуется создать новый файл записи из исходного файла - только теперь добавляется новое поле - плотность население(то бишь число население, деленное на площадь страны). Надо скопировать поля в этот новый файл - вот тут и загвоздка - я уверен, что ошибка в тексте,выделенном курсивом. Поделитесь мыслями, нужно срочно доделать.













uses crt;
type
strani=record
naz:string[20];
sq:integer;
nas:integer;
end;
plotnost=record
naz:string[20];
sq:integer;
nas:integer;
pl:real;
end;
var
i,j,k:integer;
a:strani;
b:plotnost;
f:file of strani;
f1:file of plotnost;
begin
clrscr;
assign(f,'strani.dat');
rewrite(f);
writeln('Введите число записей');readln(k);
for i:=1 to k do
begin
with a do
begin
writeln('Название страны ');readln(naz);
writeln('Площадь ');readln(sq);
writeln('Число населения ');readln(nas);
write(f,a);
end;
end;
close(f);
assign(f1,'plotnost.dat');
rewrite(f1);
reset(f);
seek(f,0);
while not eof(f) do begin
read(f,a);
for i:=1 to k-1 do begin
b.naz:=a.naz;
b.sq:=a.sq;
b.nas:=a.nas;
b.pl:=(a.nas)/(a.sq);
write(f1,b);
end;end;
close(f1);
close(f);

reset(f1);
writeln('Новый файл содержит:');
seek(f1,0);
writeln('СТРАНА','ПЛОЩАДЬ':16,'НАСЕЛЕНИЕ':8,'ПЛОТНОСТЬ':18);
while not eof(f1) do
begin
read(f1,b);
with b do
writeln(naz:4,sq:15,nas:10,pl:16:2);
end;
close(f1);
readln;
end.












































Автор: Ozzя 7.06.2007 18:24

   for i:=1 to k do begin
b.naz:=a.naz;
b.sq:=a.sq;
b.nas:=a.nas;
b.pl:=(a.nas)/(a.sq);
seek(f1,i-1);
write(f1,b);

Автор: Гость 7.06.2007 18:43

Цитата(Ozzя @ 7.06.2007 14:24) *

   for i:=1 to k do begin
b.naz:=a.naz;
b.sq:=a.sq;
b.nas:=a.nas;
b.pl:=(a.nas)/(a.sq);
seek(f1,i-1);
write(f1,b);


Оzzя, спасибо за помощь)