Программа


TYPE { Описание структур данных: }
     AMatrixType=array[1..4,1..5] of real;
     BMatrixType=array[1..5,1..4] of real;
     Vector=array[1..4] of real;
VAR A:AMatrixType; { Матрица A }
    B:BMatrixType; { Матрица B }
    A1,B1:Vector;  { Вектора A1 и B1 }
PROCEDURE InputA (var A:AMatrixType); { Процедура ввода матрицы }
  Var i,j:word;  { Счетчики }
  Begin
    for i:=1 to 4 do { Цикл ввода строк матрицы }
      for j:=1 to 5 do { Цикл ввода элементов матрицы }
        begin
          Write('Введите элемент [',i,',',j,'] ');
                                 { Вывод приглашения ввести элемент матрицы }
          ReadLn(A[i,j])   { Ввод элемента матрицы }
        end
  End;
PROCEDURE GetB (var B:BMatrixType); { Процедура ввода матрицы }
  Var i,j:word;  { Счетчики }
  Begin
    for i:=1 to 5 do { Цикл ввода строк матрицы }
      for j:=1 to 4 do { Цикл ввода элементов матрицы }
        if i+j<4 then B[i,j]:=cos(i)  { Вычисление элемента матрицы }
                 else B[i,j]:=sin(i+j)
  End;
PROCEDURE OutputA (A:AMatrixType); { Процедура вывода матрицы A }
  Var i,j:word;   { Счетчики }
  Begin
    for i:=1 to 4 do { Цикл вывода строк матрицы }
      begin
        for j:=1 to 5 do { Цикл вывода элементов матрицы }
          Write (A[i,j]:7:3,'  ');  { Вывод элемента матрицы }
        WriteLn  { Вывод конца строки }
      end
  End;
PROCEDURE OutputB (B:BMatrixType); { Процедура вывода матрицы B }
  Var i,j:word;   { Счетчики }
  Begin
    for i:=1 to 5 do { Цикл вывода строк матрицы }
      begin
        for j:=1 to 4 do { Цикл вывода элементов матрицы }
          Write (B[i,j]:7:3,'  ');  { Вывод элемента матрицы }
        WriteLn  { Вывод конца строки }
      end
  End;
FUNCTION GetMaxOfLine(A:AMatrixType; Line:word):real;
                          { Функция поиска максимального элемента в строке }
  Var NumOfMax:word;  { Номер максимального элемента }
      j:word;   { Счетчик }
  Begin
    NumOfMax:=1; { Начальное определение номера максимального элемента }
    for j:=2 to 5 do  { Цикл просмотра строки матрицы }
      if A[Line,NumOfMax]<A[Line,j] then { если текущий элемент превосходит }
        NumOfMax:=j;       { максимальный, то переопределение максимального }
    GetMaxOfLine:=A[Line,NumOfMax] { Определение значения функции }
  End;
PROCEDURE GetVectorA1(var A1:Vector; A:AMatrixType);
                                         { Процедура формирования вектора A1 }
  Var i:word;   { Счетчик }
  Begin
    for i:=1 to 4 do { Цикл формирования вектора }
      A1[i]:=GetMaxOfLine(A,i) { Поиск максимального элемента строки }
  End;
FUNCTION GetMaxOfColumn(B:BMatrixType;Column:word):real;
                          { Функция поиска максимального элемента в столбце }
  Var NumOfMax:word;  { Номер максимального элемента }
      j:word;   { Счетчик }
  Begin
    NumOfMax:=1; { Начальное определение номера максимального элемента }
    for j:=2 to 5 do  { Цикл просмотра стстолбца матрицы }
      if B[NumOfMax,Column]<B[j,Column] then { если текущий элемент превосходит }
        NumOfMax:=j;       { максимальный, то переопределение максимального }
    GetMaxOfColumn:=B[NumOfMax,Column] { Определение значения функции }
  End;
PROCEDURE GetVectorB1(var B1:Vector; B:BMatrixType);
                                         { Процедура формирования вектора A1 }
  Var i:word;   { Счетчик }
  Begin
    for i:=1 to 4 do { Цикл формирования вектора }
      B1[i]:=GetMaxOfColumn(B,i) { Поиск максимального элемента строки }
  End;
PROCEDURE OutputVector (B:Vector); { Процедура вывода вектора }
  Var i:word;   { Счетчик }
  Begin
    for i:=1 to 4 do { Цикл вывода вектора }
      Write (B[i]:7:3,'  ');  { Вывод элемента вектора }
    WriteLn  { Вывод конца строки }
  End;
FUNCTION MultVector(A1,A2:Vector):real; { Функция умножения векторов }
  Var i:word;   { Счетчик }
      Sum:real; { Сумма }
  Begin
    Sum:=0;  { Сброс суммы }
    for i:=1 to 4 do Sum:=Sum+A1[i]*A2[i]; { Набор векторного произведения }
    MultVector:=Sum { Определние значения функции }
  End;
BEGIN
  InputA(A); { Ввод матрицы A }
  GetB(B); { Формирование матрицы B }
  WriteLn; { Пропуск строки }
  WriteLn('Матрица A'); { Вывод заголовка }
  OutputA(A); { Вывод матрицы A }
  GetVectorA1(A1,A); { Формирование вектора A1 }
  WriteLn('Вектор A1'); { Вывод заголовка }
  OutputVector(A1); { Вывод вектора A1 }
  WriteLn; { Пропуск строки }
  WriteLn('Матрица B'); { Вывод заголовка }
  OutputB(B); { Вывод матрицы B }
  GetVectorB1(B1,B); { Формирование вектора B1 }
  WriteLn('Вектор B1'); { Вывод заголовка }
  OutputVector(B1); { Вывод вектора B1 }
  WriteLn; { Пропуск строки }
  WriteLn('С=',MultVector(A1,B1):7:3)
                               { Вычисление и вывод скалярного произведения }
END.

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