Как сделать оператор LETT универсальным, пригодным для любых матриц? - QBasic
Формулировка задачи:
В QBasic есть оператор LET. Правда особой необходимости в нем нет. А вот ввести оператор, который бы присваивал матрице А() значения матрицы B() было бы неплохо. Я дал этому оператору имя LETT. Легко запомнить по аналогии с LET.
Эта программа реализует выше сказанное. Следует отметить, что обе матрицы имеют равную размерность и размеры.
Вопрос.
Как сделать оператор LETT универсальным, пригодным для любых матриц?
Дарю вам этот код и радость программирования на QBasic!
Листинг программы
- DECLARE SUB LETT (A%(), B%())
- DECLARE SUB PRI (c%())
- CLS
- DIM i AS INTEGER
- DIM j AS INTEGER
- DIM SHARED n AS INTEGER
- n = 5
- DIM A(1 TO n, 1 TO n) AS INTEGER
- DIM B(1 TO n, 1 TO n) AS INTEGER
- FOR i = 1 TO n
- FOR j = 1 TO n
- B(i, j) = 9 * RND
- NEXT j, i
- CALL PRI(B())
- LETT A(), B()
- CALL PRI(A())
- END
- SUB LETT (A() AS INTEGER, B() AS INTEGER)
- FOR i = 1 TO n
- FOR j = 1 TO n
- A(i, j) = B(i, j)
- NEXT j, i
- END SUB
- SUB PRI (c() AS INTEGER)
- FOR i = 1 TO n
- FOR j = 1 TO n
- PRINT c(i, j);
- NEXT j: PRINT : NEXT i
- END SUB
Решение задачи: «Как сделать оператор 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()
- 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, так как он универсализирован и может работать с матрицами разных размеров.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д