Опубликовано: 2021-04-11 09:00:00
Решение задач на матрицы. Часть третья
Задача: В квадратной матрице (NxN) поменять местами столбцы ST1 и ST2.
- REM MATRIX
- CLS: RANDOMIZE TIMER: CONST N = 3
- DIM A(N, N)
- A = -10: B = 10
- FOR I = 1 TO N
- FOR J = 1 TO N
- A(I, J) = INT((B - A + 1) * RND + A)
- NEXT J
- NEXT I
- FOR I = 1 TO N
- FOR J = 1 TO N
- PRINT USING "#### "; A(I, J);
- NEXT J: PRINT
- NEXT I
- INPUT "POMENYAT STOLBETS - ", ST2
- INPUT "NA STOLBETS - ", ST1
- FOR I = 1 TO N
- FOR J = 1 TO N
- TEMP = A(I, ST2)
- A(I, ST2) = A(I, ST1)
- A(I, ST1) = TEMP
- NEXT J
- NEXT I
- FOR I = 1 TO N
- FOR J = 1 TO N
- PRINT USING "#### "; A(I, J);
- NEXT J: PRINT
- NEXT I
- END
Рисунок 1 - Исходный текст первой программы
Рисунок 2 – Результат выполнения первой программы
Операции со сменой местами строк матрицы аналогичные. Вот пример замены строк:
- REM MATRIX
- CLS: RANDOMIZE TIMER: CONST N = 3
- DIM A(N, N)
- A = -10: B = 10
- FOR I = 1 TO N
- FOR J = 1 TO N
- A(I, J) = INT((B - A + 1) * RND + A)
- NEXT J
- NEXT I
- FOR I = 1 TO N
- FOR J = 1 TO N
- PRINT USING "#### "; A(I, J);
- NEXT J: PRINT
- NEXT I
- INPUT "POMENYAT STROKU - ", ST2
- INPUT "NA STROKU - ", ST1
- FOR I = 1 TO N
- FOR J = 1 TO N
- TEMP = A(ST2, J)
- A(ST2, J) = A(ST1, J)
- A(ST1, J) = TEMP
- NEXT J
- NEXT I
- FOR I = 1 TO N
- FOR J = 1 TO N
- PRINT USING "#### "; A(I, J);
- NEXT J: PRINT
- NEXT I
- END
Рисунок 3 – Исходный текст второй программы
Рисунок 4 – Результат выполнения второй программы
Задача: Дана целочисленная матрица 4х4. Поменять местами K-ю строку и K-й столбец квадратной матрицы.
- REM MATRIX
- CLS: RANDOMIZE TIMER: CONST N = 3
- DIM A(N, N)
- A = -10: B = 10
- FOR I = 1 TO N
- FOR J = 1 TO N
- A(I, J) = INT((B - A + 1) * RND + A)
- NEXT J
- NEXT I
- FOR I = 1 TO N
- FOR J = 1 TO N
- PRINT USING "#### "; A(I, J);
- NEXT J: PRINT
- NEXT I
- INPUT "VVEDITE STROKU I STOLBETS - ", K
- FOR I = 1 TO N
- FOR J = 1 TO N
- TEMP = A(I, K)
- A(I, K) = A(K, I)
- A(K, I) = TEMP
- NEXT J
- NEXT I
- FOR I = 1 TO N
- FOR J = 1 TO N
- PRINT USING "#### "; A(I, J);
- NEXT J: PRINT
- NEXT I
- END
Рисунок 5 – Исходный текст третьей программы
Рисунок 6 – Результат выполнения третьей программы
Последняя задача: В заданном массиве нужно перевернуть все четные строки массива, другие строки при этом не изменяются.
- REM MATRIX
- CLS: RANDOMIZE TIMER: CONST N = 5
- DIM A(N, N)
- A = -10: B = 10
- FOR I = 1 TO N
- FOR J = 1 TO N
- A(I, J) = INT((B - A + 1) * RND + A)
- NEXT J
- NEXT I
- FOR I = 1 TO N
- FOR J = 1 TO N
- PRINT USING "#### "; A(I, J);
- NEXT J: PRINT
- NEXT I
- FOR I = 1 TO N
- IF I MOD 2 = 0 THEN
- K = 1: L = N
- WHILE (L > K)
- '"PEREVOROT" CHETNYKH STROK(SWAP-OBMENYAT ZNACHENIYA PEREMENNYKH)
- SWAP A(I, K), A(I, L)
- K = K + 1: L = L - 1
- WEND
- END IF
- NEXT I
- FOR I = 1 TO N
- FOR J = 1 TO N
- PRINT USING "#### "; A(I, J);
- NEXT J: PRINT
- NEXT I
- END
Рисунок 7 – Исходный текст четвертой программы
Рисунок 8 – Результат выполнения четвертой программы
На самом деле обмены строк и столбцов существуют в более сложном виде. Я не буду сильно углубляться в решение подобных задач, смысл вы должны понять самостоятельно. Основные примерные задачи на эту тему в статье показаны, да и этот язык рассказывается, как правило, в школах.
Спасибо за прочтение этой статьи.