Программа


DECLARE SUB ChangeStringMatrix (B!(), String1!, String2!)
DECLARE SUB ChangeColumnMatrix (B!(), Column1!, Column2!)
DECLARE SUB GetMinMaxElementMatrix (B!(), Min!, Max!)
DECLARE SUB InputMatrix (B!())
DECLARE SUB OutputMatrix (B!())
DECLARE SUB TransponatorMatrix (B!())
DECLARE SUB AddMatrix (A!(), B!(), C!())
DECLARE SUB CopyMatrix (A!(), B!())
DECLARE SUB MultiplyMatrix (A!(), B!(), C!())

QuantityString% = 4   ' Количество строк матрицы
QuantityColumn% = 4   ' Количество солбцов матрицы
DIM A(QuantityString%, QuantityColumn%) ' Матрица
DIM B(QuantityString%, QuantityColumn%) ' Матрица
DIM C(QuantityString%, QuantityColumn%) ' Матрица

QuantityStringD% = 4                  ' Количество строк матрицы
QuantityColumnD% = 3                  ' Количество солбцов матрицы
QuantityStringE% = QuantityColumnD%   ' Количество строк матрицы
QuantityColumnE% = 2                  ' Количество солбцов матрицы
QuantityStringF% = QuantityStringD%   ' Количество строк матрицы
QuantityColumnF% = QuantityColumnE%   ' Количество солбцов матрицы
DIM D(QuantityStringD%, QuantityColumnD%) ' Матрица
DIM E(QuantityStringE%, QuantityColumnE%) ' Матрица
DIM F(QuantityStringF%, QuantityColumnF%) ' Матрица


PRINT ' Пропуск строки
CALL InputMatrix(A()) ' Ввод матрицы
PRINT ' Пропуск строки
PRINT " Исходная матрица: "  ' Вывод заголовка
CALL OutputMatrix(A()) ' Вывод матрицы
CALL ChangeStringMatrix(A(), 1, 4) ' Перемена строк в матрице
PRINT ' Пропуск строки
PRINT " Перемена строк: "  ' Вывод заголовка
CALL OutputMatrix(A())' Вывод матрицы
CALL ChangeColumnMatrix(A(), 2, 1) ' Перемена столбцов в матрице
PRINT ' Пропуск строки
PRINT " Перемена столбцов: "  ' Вывод заголовка
CALL OutputMatrix(A())  ' Вывод матрицы
CALL TransponatorMatrix(A()) ' Транспонирование матрицы

STOP
PRINT ' Пропуск строки
PRINT " Транспонированная матрица: "  ' Вывод заголовка
CALL OutputMatrix(A())  ' Вывод матрицы
CALL GetMinMaxElementMatrix(A(), Min, Max)
                   ' Получение минимального и максимального элементов матрицы
PRINT ' Пропуск строки
PRINT "Min="; Min; "  Max="; Max  ' Вывод минимального и максимального элементов матрицы
CALL CopyMatrix(A(), B()) ' Копирование матрицы
CALL TransponatorMatrix(B()) ' Транспонирование матрицы
PRINT ' Пропуск строки
PRINT " Транспонированная матрица: "  ' Вывод заголовка
CALL OutputMatrix(B())  ' Вывод матрицы
CALL AddMatrix(A(), B(), C()) ' Сложение матриц
PRINT ' Пропуск строки
PRINT " Сумма матриц: "  ' Вывод заголовка
CALL OutputMatrix(C())  ' Вывод матрицы
STOP

CALL InputMatrix(D())  ' Ввод матрицы
PRINT ' Пропуск строки
PRINT " Матрица D: "  ' Вывод заголовка
CALL OutputMatrix(D()) ' Вывод матрицы
CALL InputMatrix(E()) ' Ввод матрицы
PRINT ' Пропуск строки
PRINT " Матрица E: "  ' Вывод заголовка
CALL OutputMatrix(E())  ' Вывод матрицы
CALL MultiplyMatrix(D(), E(), F()) ' Умножение матриц
PRINT ' Пропуск строки
PRINT " Произведение матриц: "  ' Вывод заголовка
CALL OutputMatrix(F())  ' Вывод матрицы
END

SUB AddMatrix (A(), B(), C()) ' Процедура сложения матриц
  FOR i% = 1 TO UBOUND(A, 1)  ' Цикл просмотра строк матрицы
    FOR j% = 1 TO UBOUND(A, 2)  ' Цикл прсмотра элементов матрицы
      C(i%, j%) = A(i%, j%) + B(i%, j%)
    NEXT j%
  NEXT i%
END SUB

SUB ChangeColumnMatrix (B(), Column1, Column2)
                                     ' Процедура перестановки столбцов матрицы
  FOR i% = 1 TO UBOUND(B, 1)  ' Цикл перестановки элементов матрицы
    SWAP B(i%, Column1), B(i%, Column2)  ' Перестановка элемента
  NEXT i%
END SUB

SUB ChangeStringMatrix (B(), String1, String2)
                                     ' Процедура перестановки строк матрицы
  FOR j% = 1 TO UBOUND(B, 2)  ' Цикл перестановки элементов матрицы
    SWAP B(String1, j%), B(String2, j%)  ' Перестановка элемента
  NEXT j%
END SUB

SUB CopyMatrix (A(), B()) ' Процедура копирования матрицы
  FOR i% = 1 TO UBOUND(A, 1)  ' Цикл просмотра строк матрицы
    FOR j% = 1 TO UBOUND(A, 2)  ' Цикл прсмотра элементов матрицы
      B(i%, j%) = A(i%, j%)  ' Копирование элемента
    NEXT j%
  NEXT i%
END SUB

SUB GetMinMaxElementMatrix (B(), Min, Max)
          ' Процедура поиска максимального и минимального элементов матрицы
  Max = B(1, 1)  ' Начальное определение максимального элемента
  Min = B(1, 1)  ' Начальное определение минимального элемента
  FOR i% = 1 TO UBOUND(B, 1)  ' Цикл просмотра строк матрицы
    FOR j% = 1 TO UBOUND(B, 2)  ' Цикл прсмотра элементов матрицы
      IF B(i%, j%) > Max THEN Max = B(i%, j%)  ' Если текущий элемент
         ' превосходит максимальный, то - переопределение максимального
      IF B(i%, j%) < Min THEN Min = B(i%, j%)' Если текущий элемент меньше
                        ' минимального, то - переопределение минимального
    NEXT j%
  NEXT i%
END SUB

SUB InputMatrix (B()) ' Процедура ввода матрицы
  FOR i% = 1 TO UBOUND(B, 1) ' Цикл ввода строк матрицы
    FOR j% = 1 TO UBOUND(B, 2)  ' Цикл ввода элементов матрицы
      PRINT "Введите элемент ["; i%; ","; j%; "]";
                                   ' Вывод приглашения ввести элемент матрицы
      INPUT " ", B(i%, j%)   ' Ввод элемента матрицы
    NEXT j%
  NEXT i%
END SUB

SUB MultiplyMatrix (A(), B(), C())  ' Процедура умножения матриц
  FOR i% = 1 TO UBOUND(A, 1)  ' Цикл просмотра строк матрицы
    FOR j% = 1 TO UBOUND(B, 2)  ' Цикл прсмотра элементов матрицы
      C(i%, j%) = 0   ' Обнуление элемента
      FOR k% = 1 TO UBOUND(A, 2)
                           ' Цикл формирования элементов матрицы произведения
        C(i%, j%) = C(i%, j%) + A(i%, k%) * B(k%, j%)
      NEXT k%
    NEXT j%
  NEXT i%
END SUB

SUB OutputMatrix (B()) ' Процедура вывода матрицы
  FOR i% = 1 TO UBOUND(B, 1)  ' Цикл вывода строк матрицы
    FOR j% = 1 TO UBOUND(B, 2)  ' Цикл вывода элементов матрицы
      PRINT B(i%, j%); "  ";  ' Вывод элемента матрицы
    NEXT j%
    PRINT  ' Вывод конца строки
  NEXT i%
END SUB

SUB ProcessMatrix (B())  ' Процедура обработки матрицы
  FOR i% = 1 TO UBOUND(B, 1)  ' Цикл просмотра строк матрицы
    FOR j% = 1 TO UBOUND(B, 2)  ' Цикл просмотра элементов матрицы

    NEXT j%
  NEXT i%
END SUB

SUB TransponatorMatrix (B()) ' Процедура транспонирования матрицы
  FOR i% = 1 TO UBOUND(B, 1)  ' Цикл просмотра строк матрицы
    FOR j% = i% TO UBOUND(B, 2)  ' Цикл прсмотра элементов матрицы
      SWAP B(i%, j%), B(j%, i%)   ' Перестановка элементов:
    NEXT j%
  NEXT i%
END SUB


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