uses crt; const maxcount = 100; // максимальное число элементов матрицы
type Tmarix=record // структура файла col:integer; massiv:array [1..maxcount,1..maxcount] of real; end;
var m:Tmarix;
// создание матрицы Procedure CreateMas(var a:Tmarix; col:integer); var x,y:integer; begin a.col:=col; for x:=1 to col do for y:=1 to col do a.massiv[x,y]:=1+random(150); end; // сохранить матрицу в массив Procedure SaveMasivToFile(a:Tmarix;Filename:string); var x,y:integer; f:file of real; buf:real; begin assign(f,filename); rewrite(f); buf:=a.col; write(f,buf); for X:=1 to a.col do for y:=1 to a.col do write(f,a.massiv[x,y]); close(f); end; // загрузить матрицу из массива Procedure LoadMasivFromFile(var a:Tmarix;Filename:string;var errorlog:integer); var x,y:integer; f:file of real; buf:real; begin errorlog:=0; try assign(f,filename); reset(f); read(f,buf); a.col:=round(buf); if a.col>maxcount then begin Writeln('Массив не может быть больше ',maxcount); errorlog:=2; // размер массива не должен привышать заданый размер exit; end; for x:=1 to a.col do for y:=1 to a.col do begin read(f,buf); a.massiv[x,y]:=buf; end; close(f); except errorlog:=1; // возникли проблы ввода вывода writeln('Ошибка ввода массива'); end; end; // вывести матрицу на экран
// Транспонирование матрицы procedure Transpose(var a:Tmarix); var x,y:integer; t:real; begin for y:=1 to a.col do for x:=y+1 to a.col do begin t:=a.massiv[x,y]; a.massiv[x,y]:=a.massiv[y,x]; a.massiv[y,x]:=t; end; end;
Procedure ViewMarix(a:Tmarix); var x,y:integer; begin for y:=1 to a.col do begin writeln; writeln; // два пробела for x:=1 to a.col do write(a.massiv[x,y]:8:2,' '); end; end;
var e:integer; begin clrscr; // очистка экрана // для создания файла //CreateMas(m,5); // создаем матрицу //SaveMasivToFile(m,'input.dat'); LoadMasivFromFile(m,'input.dat',e); // считываем матрицу if e=0 then begin Writeln('Исходная матрица '); ViewMarix(m); // выводим исходную матрицу на экран Writeln; Writeln('Транспонирование матрицы'); Transpose(m); // Транспонирование матрицы //Transpose(m); // ViewMarix(m); // выводим на экран SaveMasivToFile(m,'output.dat'); // сохроняем полученную матрицу end; end.
решение от пользователя http://www.programmersforum.ru/member.php?u=116364
uses
crt;
const
n = 100;
var
a: array[1..n, 1..n] of real;
i, j, p: integer;
p1: real;
f1, f2: file of real;
begin
assign(f1, 'in.txt');
reset(f1);
assign(f2, 'out.txt');
rewrite(f2);
read(f1, p1);
p := round(p1);
for i := 1 to p do
for j := 1 to p do
read(f1, a[i, j]);
for i := 1 to p do
for j := 1 to p do
write(f2, a[j, i]);
close(f1);
close(f2);
end.
|