Другие языки программирования и технологии

Паскаль. Исправьте ошибки

Исправьте ошибки.

Нужно создать таблицу, которая будет выводить данные о погоде. Программа работает, но вместо таблицы с введёнными данными выводится просто начало.

Program baza;
const n=5;

label 10;
type rec = record
temp: real;
date: string;
overcast: string;
fallout: string;
region: string;
end;

FT = file of integer;
Var
a:ft;
i,z:integer;
s:real;
Procedure Sozd (var a: ft);
Var i,j:integer;
zk:rec;
begin
rewrite (a);
j:=1;
while j<>80 do
begin
Write('Введите температуру: ');
readln(zk.temp);
Write('Введите дату: ');
readln(zk.date);
Write('Введите облачность: ');
readln(zk.overcast);
Write('Введите осадки: ');
readln(zk.fallout);
Write('Введите регион: ');
readln(zk.region);
Write(a);
Write('Запись сохранена! Будете ещё вносить данные? Если да, то нажмите 80');
readln (j);
end;
close (a);
end;

Procedure vyvod (var a: ft);
Var i:integer;
zk:rec;
begin
reset (a);
writeln('==========================================');
writeln('|Температура|Дата|Облачность|Осадки|Регион|');
writeln('==========================================');
while not eof(a) do
begin
read (i);
write('|',zk.temp:2,'|');
write('|',zk.date:10,'|');
write('|',zk.overcast:5,'|');
write('|',zk.fallout:3,'|');
write('|',zk.region:3,'|');
writeln;
writeln ('-------------------------------');
end;
close (a);
end;

procedure delete (var a:ft);
Var n,m:longint;
i:byte;
mas:array [1..20] of rec;
begin
i:=1;
reset(a);
writeln ('vvedite nomer zapisi dlja udalenija (If the end of the record is then press 80)?');
readln(n);
m:=filesize(a)-n;
seek (a,n);
while not eof(a) do
begin
read (i);
i:=i+1;
end;
close (a);
reset (a);
seek (a,n-1);
truncate (a);
close (a);
reset (a);
seek (a,n-1);
for i:=1 to m do
write (a);
end;

Procedure poisk (var a:ft);
var i:integer;
zk:rec;
date:string;
begin
reset (a);
writeln ('Введите дату для поиска ');
readln (date);
writeln ('Список с заданной датой ');
writeln('===========================================');
writeln('|Температура|Дата|Облачность|Осадки|Регион|');
writeln('===========================================');
while not eof(a) do
begin
read(i);
while not eof(a) do
begin
write('|',zk.temp:2,'|');
write('|',zk.date:10,'|');
write('|',zk.overcast:5,'|');
write('|',zk.fallout:3,'|');
write('|',zk.region:3,'|');
writeln;
writeln('-------------------------------------------');
end;
end;
close(a);
end;

begin
10:
assign (a,'fff');
writeln (' Меню ');
writeln ('1: Создание');
writeln ('2: Вывод ');
writeln ('3: Удаление');
writeln ('4: Поиск ');
writeln ('5: Выход ');
readln (z);
case z of
1: sozd(a);
2: vyvod (a);
3: delete(a);
4: poisk (a);
5: exit;
end; goto 10;
readln
end.
подправил, работает кроме delete(не испровлял)
Program baza;
uses crt;
const n=5;
label 10;
type rec = record
temp: real;
date: string;
overcast: string;
fallout: string;
region: string;
end;

FT = file of rec;
Var
a:ft;
i,z:integer;
s:real;
Procedure Sozd; //------------------------------------------------
Var i,j:integer;
h:char;
zk:rec;
begin
rewrite (a);
j:=1;
h:='y';
while h='y' do
begin
Write('Ââåäèòå òåìïåðàòóðó: ');
readln(zk.temp);
Write('Ââåäèòå äàòó: ');
readln(zk.date);
Write('Ââåäèòå îáëà÷íîñòü: ');
readln(zk.overcast);
Write('Ââåäèòå îñàäêè: ');
readln(zk.fallout);
Write('Ââåäèòå ðåãèîí: ');
readln(zk.region);
Write(a,zk);
Write('Çàïèñü ñîõðàíåíà! Áóäåòå åù¸ âíîñèòü äàííûå? (y/n)');
readln (h);
end;
close (a);
end;

Procedure vyvod; //---------------------------------------
Var i:integer;
zk:rec;
begin
reset (a);
writeln('==========================================');
writeln('|Òåìïåðàòóðà|Äàòà|Îáëà÷íîñòü|Îñàäêè|Ðåãèîí|');
writeln('==========================================');
while not eof(a) do
begin
read (a,zk);
write('|',zk.temp:0:2,'|');
write('|',zk.date:10,'|');
write('|',zk.overcast:5,'|');
write('|',zk.fallout:3,'|');
write('|',zk.region:3,'|');
writeln;
writeln ('-------------------------------');
end;
close (a);
writeln('enter'); readln;
end;

procedure delete;
Var n,m:longint;
i:byte;
zk:rec;
mas:array [1..20] of rec;
begin
i:=1;
reset(a);
writeln ('vvedite nomer zapisi dlja udalenija (If the end of the record is then press 80)?');
readln(n);
m:=filesize(a)-n;
seek (a,n);
while not eof(a) do
begin
read (a,zk);
i:=i+1;
end;
close (a);
reset (a);
seek (a,n-1);
truncate (a);
close (a);
reset (a);
seek (a,n-1);
for i:=1 to m do
write (a);
end;

Procedure poisk;
var i:integer;
zk:rec;
date:string;
begin
reset (a);
writeln ('Ââåäèòå äàòó äëÿ ïîèñêà ');
readln (date);
writeln ('Ñïèñîê ñ çàäàííîé äàòîé ');
writeln('===========================================');
writeln('|Òåìïåðàòóðà|Äàòà|Îáëà÷íîñòü|Îñàäêè|Ðåãèîí|');
writeln('===========================================');
while not eof(a) do
begin
read(a,zk);
if date= zk.date then begin
write('|',zk.temp:0:2,'|');
write('|',zk.date:10,'|');
write('|',zk.overcast:5,'|');
write('|',zk.fallout:3,'|');
write('|',zk.region:3,'|');
writeln; end;
writeln('-------------------------------------------');
end;
close(a);
readln;
end;

begin
assign (a,'pogoda.dat');
10:
clrscr;
writeln (' Ìåíþ ');
writeln ('1: Ñîçäàíèå');
writeln ('2: Âûâîä ');
writeln ('3: Óäàëåíèå');
writeln ('4: Ïîèñê ');
writeln ('5: Âûõîä ');
readln (z);
case z of
1: sozd;
2: vyvod ;
3: delete;
4: poisk;
5: exit;
end; goto 10;
readln
end.
НН
Неизвестно Неизвестно
95 951
Лучший ответ
Неизвестно Неизвестно если не получится программу довести до ума, пиши, переделаем меню и печать с оператором with
Неизвестно Неизвестно хотел немного причесать программу, но она в комментарий не влезает, могу прислать в адрес и бесплатно
FT = file of integer - файл из целых чисел. Вы-же наверное собираетесь структуры писать/читать (в которых есть кст и строки). Чтение и запись в файл не нашел. Должны быть write(a, переменная) и read(a, переменная), а не просто read(a) и write(a) т. к. непонятно куда читать из файла и соотв. что записывать.

Надо определиться с форматом файла - будет ли он текстовый или типизированным файлом из структур. После этого применять соотв. запись в файл и чтение.

P.S: Работа с типизированными файлами с примерами (в конце похожий случай)
http://pas1.ru/typed-file