Программа


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.

Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию