Отладил.
Ошибок - такое море, что за голову хватаешься и стонешь. Тут и обращение с массивами, как с простой переменной (без указания индекса), и абсолютно безграмотно написанная сортировка, и много чего еще разного - всего и не перечислишь.
Устал уже повторять, но повторю вновь: в программировании неряшливость недопустима, транслятор не понимает никаких "ну что-то типо...", тут каждое действие, каждый значок должен быть строго выверен и осмысленно поставлен.
Несколько пояснений:
1. Отлаживалось на DOS Free Pascal, поэтому имя модуля obrabotki сокращено (в DOS имена ограничиваются восьмью символами). Поправьте, если надо.
2. Во избежание заморочек с кодировками кириллица убрана.
3. Путь к файлу в команде Assign - тоже поправьте.
А так - программа полностью отлажена и оттестирована.
Код:
program pro1;
uses
op, obrab;
begin
assign(sv, 'D:\lep_zar.dat');
vvod;
vivod;
sort;
readln
end.
Код:
unit obrab;
interface
uses op;
procedure vvod;
procedure vivod;
procedure sort;
implementation
procedure vvod;
var
i,n: integer;
begin
rewrite(sv);
write('Enter the number of regions: ');
readln(n);
for i:= 1 to n do
begin
writeln(i, '-: ');
with sd[i] do
begin
write('Region name: ');
readln(name);
write('Economical indicators: ');
readln(pocaz);
write(sv, sd[i]);
end;
end;
close(sv);
end;
procedure vivod;
var
sxx:region;
begin
reset(sv);
writeln('-----------------------------');
writeln('Region Industrial economical indications');
writeln('-----------------------------');
while not eof(sv) do
begin
read(sv,sxx);
with sxx do writeln(name: 10, pocaz: 16);
end;
writeln('--------------------------------');
close(sv);
end;
procedure sort;
var
i,j,n,i_min,i_max,min,max:integer;
temp:region;
begin
reset(sv);
n:=0;
while not eof(sv) do
begin
Inc(n);
read(sv,sd[n]);
end;
close(sv);
for j:=1 to n-1 do
for i:=1 to n-j do
if sd[i].pocaz>sd[i+1].pocaz then
begin
temp:=sd[i];
sd[i]:=sd[i+1];
sd[i+1]:=temp;
end;
i_min:=1;
i_max:=1;
min:=sd[1].pocaz;
max:=sd[1].pocaz;
for i:=2 to n do
begin
if sd[n].pocaz<min then
begin
i_min:=n;
min:=sd[n].pocaz;
end;
if sd[n].pocaz>max then
begin
i_max:=n;
max:=sd[n].pocaz;
end;
end;
Writeln('Sorted:');
writeln('-----------------------------');
writeln('Region Industrial economical indications');
writeln('-----------------------------');
for i:=1 to n do
with sd[i] do writeln(name: 10, pocaz: 16);
writeln('--------------------------------');
Writeln;
Writeln('Minimal:');
with sd[i_min] do writeln(name: 10, pocaz: 16);
Writeln('Maximal:');
with sd[i_max] do writeln(name: 10, pocaz: 16);
end;
end.
Код:
unit op;
interface
const maxk = 10;
type
region = record
name: string[20];
pocaz: Integer;
end;
sved = file of region;
sdd = array[1..maxk] of region;
var
sd:sdd;
sv:sved;
implementation
end.