Программа


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

'D*E=F
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()) ' Транспонирование матрицы

s$=input$(1)
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())  ' Вывод матрицы
s$=input$(1)

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(2), B(2), C(2)) ' Процедура сложения матриц
  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(2), Column1, Column2)
                                     ' Процедура перестановки столбцов матрицы
  FOR i% = 1 TO UBOUND(B(1))  ' Цикл перестановки элементов матрицы
    SWAP B(i%, Column1), B(i%, Column2)  ' Перестановка элемента
  NEXT i%
END SUB

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

SUB CopyMatrix (A(2), B(2)) ' Процедура копирования матрицы
  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(2), 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(2)) ' Процедура ввода матрицы
  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(2), B(2), C(2))  ' Процедура умножения матриц
  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(2)) ' Процедура вывода матрицы
  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(2))  ' Процедура обработки матрицы
  FOR i% = 1 TO UBOUND(B(1))  ' Цикл просмотра строк матрицы
    FOR j% = 1 TO UBOUND(B(2))  ' Цикл просмотра элементов матрицы

    NEXT j%
  NEXT i%
END SUB

SUB TransponatorMatrix (B(2)) ' Процедура транспонирования матрицы
  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


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