Как сделать оператор LETT универсальным, пригодным для любых матриц? - QBasic
Формулировка задачи:
В QBasic есть оператор LET. Правда особой необходимости в нем нет. А вот ввести оператор, который бы присваивал матрице А() значения матрицы B() было бы неплохо. Я дал этому оператору имя LETT. Легко запомнить по аналогии с LET.
Эта программа реализует выше сказанное. Следует отметить, что обе матрицы имеют равную размерность и размеры.
Вопрос.
Как сделать оператор LETT универсальным, пригодным для любых матриц?
Дарю вам этот код и радость программирования на QBasic!
Решение задачи: «Как сделать оператор LETT универсальным, пригодным для любых матриц?»
textual
Листинг программы
REM Оператор присвоения LETT
REM LETT A(), B() { A() = B() }
DECLARE SUB LETT (A%(), B%())
DECLARE SUB PRI (c%(), n%, m%)
DEFINT A-Z
OPTION BASE 1
RANDOMIZE TIMER
CLS
DIM SHARED n1
DIM SHARED n2
DIM SHARED m1
DIM SHARED m2
n1 = 2 + 5 * RND
n2 = 2 + 5 * RND
m1 = 2 + 5 * RND
m2 = 2 + 5 * RND
DIM A(n1, m1) AS INTEGER
DIM B(n2, m2) AS INTEGER
FOR i = 1 TO n2
FOR j = 1 TO m2
B(i, j) = 9 * RND
NEXT j
NEXT i
CALL PRI(B(), n2, m2)
LETT A(), B()
PRINT
CALL PRI(A(), n1, m1)
END
SUB LETT (A() AS INTEGER, B() AS INTEGER)
DIM n AS INTEGER
DIM m AS INTEGER
IF n1 >= n2 AND m1 >= m2 THEN
n = n2
m = m2
ELSEIF n1 >= n2 AND m1 < m2 THEN
n = n2
m = m1
ELSEIF n1 < n2 AND m1 >= m2 THEN
n = n1
m = m2
ELSE
n = n1
m = m1
END IF
FOR i = 1 TO n
FOR j = 1 TO m
A(i, j) = B(i, j)
NEXT j
NEXT i
END SUB
SUB PRI (c() AS INTEGER, n AS INTEGER, m AS INTEGER)
FOR i = 1 TO n
FOR j = 1 TO m
PRINT c(i, j);
NEXT j: PRINT : NEXT i
END SUB
Объяснение кода листинга программы
Список действий в коде:
- Объявление оператора LETT и его параметров.
- Объявление подпрограммы PRI и ее параметров.
- Объявление переменных A, B, n1, n2, m1, m2, SHARED.
- Задание значений переменным n1, n2, m1, m2.
- Выделение памяти под матрицы A и B.
- Заполнение матрицы B случайными числами.
- Вызов подпрограммы PRI для печати матрицы B.
- Универсализация оператора LETT для работы с любыми матрицами A и B.
- Вызов подпрограммы PRI для печати матрицы A.
- Конец программы. Код позволяет использовать оператор LETT для любых матриц A и B, так как он универсализирован и может работать с матрицами разных размеров.