QBASICBOOK.ru: сайт про QB64

Опубликовано: 2021-04-11 09:00:00

Решение задач на матрицы. Часть третья

Задача: В квадратной матрице (NxN) поменять местами столбцы ST1 и ST2.


  1. REM MATRIX
  2. CLS: RANDOMIZE TIMER: CONST N = 3
  3. DIM A(N, N)
  4. A = -10: B = 10
  5. FOR I = 1 TO N
  6.     FOR J = 1 TO N
  7.         A(I, J) = INT((B - A + 1) * RND + A)
  8.     NEXT J
  9. NEXT I
  10. FOR I = 1 TO N
  11.     FOR J = 1 TO N
  12.         PRINT USING "####  "; A(I, J);
  13.     NEXT J: PRINT
  14. NEXT I
  15. INPUT "POMENYAT STOLBETS - ", ST2
  16. INPUT "NA STOLBETS - ", ST1
  17. FOR I = 1 TO N
  18.     FOR J = 1 TO N
  19.         TEMP = A(I, ST2)
  20.         A(I, ST2) = A(I, ST1)
  21.         A(I, ST1) = TEMP
  22.     NEXT J
  23. NEXT I
  24. FOR I = 1 TO N
  25.     FOR J = 1 TO N
  26.         PRINT USING "####  "; A(I, J);
  27.     NEXT J: PRINT
  28. NEXT I
  29. END

 

Рисунок 1 - Исходный текст первой программы

Рисунок 2 – Результат выполнения первой программы

Операции со сменой местами строк матрицы аналогичные. Вот пример замены строк:


  1. REM MATRIX
  2. CLS: RANDOMIZE TIMER: CONST N = 3
  3. DIM A(N, N)
  4. A = -10: B = 10
  5. FOR I = 1 TO N
  6.     FOR J = 1 TO N
  7.         A(I, J) = INT((B - A + 1) * RND + A)
  8.     NEXT J
  9. NEXT I
  10. FOR I = 1 TO N
  11.     FOR J = 1 TO N
  12.         PRINT USING "####  "; A(I, J);
  13.     NEXT J: PRINT
  14. NEXT I
  15. INPUT "POMENYAT STROKU - ", ST2
  16. INPUT "NA STROKU - ", ST1
  17. FOR I = 1 TO N
  18.     FOR J = 1 TO N
  19.         TEMP = A(ST2, J)
  20.         A(ST2, J) = A(ST1, J)
  21.         A(ST1, J) = TEMP
  22.     NEXT J
  23. NEXT I
  24. FOR I = 1 TO N
  25.     FOR J = 1 TO N
  26.         PRINT USING "####  "; A(I, J);
  27.     NEXT J: PRINT
  28. NEXT I
  29. END

 

Рисунок 3 – Исходный текст второй программы

Рисунок 4 – Результат выполнения второй программы

Задача: Дана целочисленная матрица 4х4. Поменять местами K-ю строку и K-й столбец квадратной матрицы.


    1. REM MATRIX
    2. CLS: RANDOMIZE TIMER: CONST N = 3
    3. DIM A(N, N)
    4. A = -10: B = 10
    5. FOR I = 1 TO N
    6.     FOR J = 1 TO N
    7.         A(I, J) = INT((B - A + 1) * RND + A)
    8.     NEXT J
    9. NEXT I
    10. FOR I = 1 TO N
    11.     FOR J = 1 TO N
    12.         PRINT USING "####  "; A(I, J);
    13.     NEXT J: PRINT
    14. NEXT I
    15. INPUT "VVEDITE STROKU I STOLBETS - ", K
    16. FOR I = 1 TO N
    17.     FOR J = 1 TO N
    18.         TEMP = A(I, K)
    19.         A(I, K) = A(K, I)
    20.         A(K, I) = TEMP
    21.     NEXT J
    22. NEXT I
    23. FOR I = 1 TO N
    24.     FOR J = 1 TO N
    25.         PRINT USING "####  "; A(I, J);
    26.     NEXT J: PRINT
    27. NEXT I
    28. END

Рисунок 5 – Исходный текст третьей программы

Рисунок 6 – Результат выполнения третьей программы

Последняя задача: В заданном массиве нужно перевернуть все четные строки массива, другие строки при этом не изменяются.


  1. REM MATRIX
  2. CLS: RANDOMIZE TIMER: CONST N = 5
  3. DIM A(N, N)
  4. A = -10: B = 10
  5. FOR I = 1 TO N
  6.     FOR J = 1 TO N
  7.         A(I, J) = INT((B - A + 1) * RND + A)
  8.     NEXT J
  9. NEXT I
  10. FOR I = 1 TO N
  11.     FOR J = 1 TO N
  12.         PRINT USING "####  "; A(I, J);
  13.     NEXT J: PRINT
  14. NEXT I
  15. FOR I = 1 TO N
  16.     IF I MOD 2 = 0 THEN
  17.         K = 1: L = N
  18.         WHILE (L > K)
  19.             '"PEREVOROT" CHETNYKH STROK(SWAP-OBMENYAT ZNACHENIYA PEREMENNYKH)
  20.             SWAP A(I, K), A(I, L)
  21.             K = K + 1: L = L - 1
  22.         WEND
  23.     END IF
  24.     PRINT
  25. NEXT I
  26. FOR I = 1 TO N
  27.     FOR J = 1 TO N
  28.         PRINT USING "####  "; A(I, J);
  29.     NEXT J: PRINT
  30. NEXT I
  31. END

Рисунок 7 – Исходный текст четвертой программы

Рисунок 8 – Результат выполнения четвертой программы

На самом деле обмены строк и столбцов существуют в более сложном виде. Я не буду сильно углубляться в решение подобных задач, смысл вы должны понять самостоятельно. Основные примерные задачи на эту тему в статье показаны, да и этот язык рассказывается, как правило, в школах.

Спасибо за прочтение этой статьи.

 

Прикрепленные файлы:

< Предыдущая статья
Решение задач на матрицы. Часть вторая
Следующая статья >
Сортировка вектора по возрастанию

Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.