Как сделать оператор LETT универсальным, пригодным для любых матриц? - QBasic

Узнай цену своей работы

Формулировка задачи:

В QBasic есть оператор LET. Правда особой необходимости в нем нет. А вот ввести оператор, который бы присваивал матрице А() значения матрицы B() было бы неплохо. Я дал этому оператору имя LETT. Легко запомнить по аналогии с LET. Эта программа реализует выше сказанное. Следует отметить, что обе матрицы имеют равную размерность и размеры. Вопрос. Как сделать оператор LETT универсальным, пригодным для любых матриц?
Листинг программы
  1. DECLARE SUB LETT (A%(), B%())
  2. DECLARE SUB PRI (c%())
  3. CLS
  4. DIM i AS INTEGER
  5. DIM j AS INTEGER
  6. DIM SHARED n AS INTEGER
  7. n = 5
  8. DIM A(1 TO n, 1 TO n) AS INTEGER
  9. DIM B(1 TO n, 1 TO n) AS INTEGER
  10. FOR i = 1 TO n
  11. FOR j = 1 TO n
  12. B(i, j) = 9 * RND
  13. NEXT j, i
  14. CALL PRI(B())
  15. LETT A(), B()
  16. PRINT
  17. CALL PRI(A())
  18. END
  19. SUB LETT (A() AS INTEGER, B() AS INTEGER)
  20. FOR i = 1 TO n
  21. FOR j = 1 TO n
  22. A(i, j) = B(i, j)
  23. NEXT j, i
  24. END SUB
  25. SUB PRI (c() AS INTEGER)
  26. FOR i = 1 TO n
  27. FOR j = 1 TO n
  28. PRINT c(i, j);
  29. NEXT j: PRINT : NEXT i
  30. END SUB
Дарю вам этот код и радость программирования на QBasic!

Решение задачи: «Как сделать оператор LETT универсальным, пригодным для любых матриц?»

textual
Листинг программы
  1. REM   Оператор присвоения LETT
  2. REM   LETT A(), B()     { A() = B() }
  3.  
  4. DECLARE SUB LETT (A%(), B%())
  5. DECLARE SUB PRI (c%(), n%, m%)
  6. DEFINT A-Z
  7. OPTION BASE 1
  8. RANDOMIZE TIMER
  9. CLS
  10.  
  11. DIM SHARED n1
  12. DIM SHARED n2
  13. DIM SHARED m1
  14. DIM SHARED m2
  15.  
  16. n1 = 2 + 5 * RND
  17. n2 = 2 + 5 * RND
  18. m1 = 2 + 5 * RND
  19. m2 = 2 + 5 * RND
  20.  
  21. DIM A(n1, m1) AS INTEGER
  22. DIM B(n2, m2) AS INTEGER
  23.  
  24. FOR i = 1 TO n2
  25. FOR j = 1 TO m2
  26.    B(i, j) = 9 * RND
  27. NEXT j
  28. NEXT i
  29.  
  30. CALL PRI(B(), n2, m2)
  31. LETT A(), B()
  32. PRINT
  33. CALL PRI(A(), n1, m1)
  34.  
  35. END
  36.  
  37. SUB LETT (A() AS INTEGER, B() AS INTEGER)
  38.  
  39. DIM n AS INTEGER
  40. DIM m AS INTEGER
  41.  
  42.    IF n1 >= n2 AND m1 >= m2 THEN
  43.       n = n2
  44.       m = m2
  45.    ELSEIF n1 >= n2 AND m1 < m2 THEN
  46.       n = n2
  47.       m = m1
  48.    ELSEIF n1 < n2 AND m1 >= m2 THEN
  49.       n = n1
  50.       m = m2
  51.    ELSE
  52.       n = n1
  53.       m = m1
  54.    END IF
  55.  
  56.    FOR i = 1 TO n
  57.    FOR j = 1 TO m
  58.       A(i, j) = B(i, j)
  59.    NEXT j
  60.    NEXT i
  61.  
  62. END SUB
  63.  
  64. SUB PRI (c() AS INTEGER, n AS INTEGER, m AS INTEGER)
  65.    FOR i = 1 TO n
  66.    FOR j = 1 TO m
  67.       PRINT c(i, j);
  68.    NEXT j: PRINT : NEXT i
  69. END SUB

Объяснение кода листинга программы

Список действий в коде:

  1. Объявление оператора LETT и его параметров.
  2. Объявление подпрограммы PRI и ее параметров.
  3. Объявление переменных A, B, n1, n2, m1, m2, SHARED.
  4. Задание значений переменным n1, n2, m1, m2.
  5. Выделение памяти под матрицы A и B.
  6. Заполнение матрицы B случайными числами.
  7. Вызов подпрограммы PRI для печати матрицы B.
  8. Универсализация оператора LETT для работы с любыми матрицами A и B.
  9. Вызов подпрограммы PRI для печати матрицы A.
  10. Конец программы. Код позволяет использовать оператор LETT для любых матриц A и B, так как он универсализирован и может работать с матрицами разных размеров.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы