Программа
PROGRAM Matrix;
CONST MaxQuant=20; { Максимальное количество строк и столбцов матрицы }
TYPE Power=1..MaxQuant; { Размерность массивов }
Element=real; { Тип элементов массивов }
MatrixType=record { Тип - матрица }
W,H:Power; { Реальное количество строк и столбцов (ширина и высота матрицы) }
M:array[Power,Power] of Element { Массив элементов (матрица)}
end;
PROCEDURE ReadMatrix(var F:text; var A:MatrixType); { Процедура ввода вектора }
Var i:0..MaxQuant; { Счетчик строк }
j:0..MaxQuant; { Счетчик столбцов }
Begin
Reset(F); { Открытие файла для чтения }
i:=0; { Сброс счетчика строк }
while not EOF(F) do { Цикл чтения файла }
begin
i:=i+1; { Определение номера строки }
j:=0; { Сброс счетчика столбцов }
while not EOLn(F) do
begin
j:=j+1; { Определение номера элемента в строке }
Read(F,A.M[i,j]) { Чтение элемента матрицы }
end;
ReadLn(F) { Чтение конца строки файла }
end;
Close(F); { Закрытие файла }
A.W:=j; A.H:=i { Определение размерности матрицы }
End;
PROCEDURE WriteMatrix(var F:text; Head:string; var A:MatrixType); { Процедура вывода матрицы }
Var i:Power; { Счетчик строк }
j:Power; { Счетчик столбцов }
Begin
Rewrite(F); { Открытие файла для записи }
if Head<>'' then WriteLn(F,Head); { Вывод заголовка }
for i:=1 to A.H do { Цикл вывода строк }
begin
for j:=1 to A.W do { Цикл вывода стрки }
Write(F,A.M[i,j]:5:2,' '); { Вывод элемента }
WriteLn(F) { Вывод конца строки }
end;
Close(F) { Закрытие файла }
End;
PROCEDURE Transponator(A:MatrixType; var B:MatrixType); { Процедура транспонирования матрицы }
Var i:Power; { Счетчик строк }
j:Power; { Счетчик столбцов }
Begin
for i:=1 to A.H do { Цикл копирования строк }
for j:=1 to A.W do { Цикл копирования стрки }
B.M[j,i]:=A.M[i,j]; { Копирования элемента }
B.W:=A.H; B.H:=A.W; { Определение размерности транспонированной матрицы }
End;
VAR A,B:MatrixType; { Исходная и создаваемая матрицы }
F:text; { Указатель файловой переменной }
BEGIN
WriteLn; { Пропуск строки }
Assign(F,'init.dat'); { Связывание указателя с именем файла }
ReadMatrix(F,A); { Ввод матрицы }
Transponator(A,B); { Транспонирование матрицы }
Assign(F,'con'); { Связывание указателя с именем файла (консоль) }
WriteMatrix(F,'ИСХОДНАЯ МАТРИЦА',A); { Вывод матрицы }
WriteLn; { Пропуск строки }
WriteMatrix(F,'ТРАНСПОНИРОВАННАЯ МАТРИЦА',B); { Вывод матрицы }
WriteLn; { Пропуск строки }
Assign(F,'res.dat'); { Связывание указателя с именем файла (на диске в текущем каталоге) }
WriteMatrix(F,'',B); { Вывод матрицы }
WriteLn; { Пропуск строки }
END.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию