Консультация № 169231
10.06.2009, 10:57
0.00 руб.
0 1 1
Здравствуйте! Помогите добавить процедуру считывания матрицы из файла в данной программе:
Код:
uses crt;

type
PtrStr = ^Str;
Str = array [1..1] of integer;

PtrMatr = ^Matr;
Matr = array [1..1] of PtrStr;

var
matrica: PtrMatr;
razmer, i, j: integer;

procedure CreateMatr;

begin
write ('razmernost matricy: ');
readln(razmer);

getmem(matrica, razmer*SizeOf(PtrStr));

for i:=1 to razmer do
getmem(matrica^[i], razmer*SizeOf(integer));

writeln('vvodim elementy:');
for i:=1 to razmer do
for j:=1 to razmer do
readln(matrica^[i]^[j]);

end;

procedure destroymatrix;
begin

for i:=1 to razmer do
freemem(matrica^[i], razmer*SizeOf(integer));

freemem(matrica, razmer*SizeOf(PtrStr));


end;

procedure otobrajenie;
begin
for i:=1 to razmer do
begin
writeln;
for j:=1 to razmer do
write(matrica^[i]^[j]:5);
end;
writeln;
end;


procedure sortirovka;
var buffer1, buffer2, buffer3: integer;
begin
buffer3:=1;
for i:=1 to razmer do
begin
buffer1:= matrica^[i]^[1];
buffer2:= matrica^[i]^[razmer+1-i];
for j:=0 to razmer-1 do
begin
if matrica^[i]^[j+1] <= buffer1 then
begin
buffer3:=j+1;
buffer1:=matrica^[i]^[j+1];
end;
matrica^[i]^[buffer3]:=buffer2;
matrica^[i]^[razmer+1-i]:=buffer1;
end;
end;
end;

begin

clrscr;
CreateMatr;
otobrajenie;
sortirovka;
otobrajenie;
destroymatrix;
readln;
end.

Обсуждение

Неизвестный
10.06.2009, 11:26
общий
это ответ
Здравствуйте, Alex12.

Код в приложении.
Имеет смысл вынести создание массива в отдельную подпрограмму, тогда в процедурах ручного ввода и считывания из файла останутся только вызовы этой подпрограммы.
Ну и до кучи прилагаю код процедуры записи матрицы в текстовый файл.

Приложение:
procedure LoadMatr;
var
fname : string;
f : text;

begin
write ('file name: '); readln (fname);
Assign (f, fname); Reset (f);
readln (f, razmer); { размер матрицы задается в первой строке файла }
getmem (matrica, razmer*SizeOf(PtrStr));
for i:=1 to razmer do
getmem (matrica^[i], razmer*SizeOf(integer));

{ считываем элементы из файла. Элементы располагаются в файле построчно }
for i:=1 to razmer do
for j:=1 to razmer do
read (f, matrica^[i]^[j]);
end;

procedure SaveMatr;
var
fname : string;
f : text;

begin
write ('file name: '); readln (fname);
Assign (f, fname); Rewrite (f);
writeln (f, razmer); { размер матрицы задается в первой строке файла }

{ записываем элементы в файл. Элементы располагаются в файле построчно }
for i:=1 to razmer do
begin
for j:=1 to razmer do
write (f, ' ', matrica^[i]^[j]);
writeln (f);
end;
end;
5
Спасибо!
Форма ответа