QBASICBOOK.ru: сайт про QB64
Во многих задачах требуется поменять местами один элемент массива с другим элементом. В этом случае, нужно запомнить его индекс, а затем использовать его в алгоритме замены.
В задачах на нахождение минимума / максимума всегда встает вопрос: с чем сравнивать элементы массива. Для этой цели обычно служит первый элемент, с которым последовательно сравниваются все элементы массива.
Задача: Поменять местами минимальный (MIN) и максимальный (MAX) элементы друг с другом:
- REM MATRIX
- CLS: RANDOMIZE TIMER: CONST N = 5
- DIM A(N, N)
- A = 1: B = 20
- 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
- ‘POISK MINIMUMA
- MIN = A(1, 1)
- FOR I = 1 TO N
- FOR J = 1 TO N
- IF (A(I, J) < MIN) THEN
- MIN = A(I, J)
- INDEXMINI = I
- INDEXMINJ = J
- END IF
- NEXT J
- NEXT I
- ‘POISK MAKSIMUMA
- MAX = A(1, 1)
- FOR I = 1 TO N
- FOR J = 1 TO N
- IF (A(I, J) > MAX) THEN
- MAX = A(I, J)
- INDEXMAXI = I
- INDEXMAXJ = J
- END IF
- NEXT J
- NEXT I
- PRINT «MAKSIMALNYY ELEMENT:» ; MAX
- PRINT «NOMER MAX:» ; INDEXMAXI; INDEXMAXJ
- PRINT «MINIMALNYY ELEMENT:» ; MIN
- PRINT «NOMER MIN:» ; INDEXMINI; INDEXMINJ
- ‘PERSTANOVKA MESTAMI MAKSIMALNOGO I MINIMALNOGO ELEMENTOV
- VSPOMOGATTL_PEREMENNAYA = A(INDEXMAXI, INDEXMAXJ)
- A(INDEXMAXI, INDEXMAXJ) = A(INDEXMINI, INDEXMINJ)
- A(INDEXMINI, INDEXMINJ) = VSPOMOGATTL_PEREMENNAYA
- FOR I = 1 TO N
- FOR J = 1 TO N
- PRINT USING «#### » ; A(I, J);
- NEXT J: PRINT
- NEXT I
- END

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

Рисунок 2 – Результат выполнения первой программы
Задача: Дан двухмерный массив из A(NxN) элементов. Посчитать сумму и количество положительных чисел для каждой строки, сумму и количество положительных чисел во всем двумерном массиве.
- 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
- KOLPOLVSEH = 0
- SUMPOLVSEH = 0
- FOR I = 1 TO N
- FOR J = 1 TO N
- IF (A(I, J) > 0) THEN
- KOLPOLVSEH = KOLPOLVSEH + 1
- SUMPOLVSEH = SUMPOLVSEH + A(I, J)
- END IF
- NEXT J
- NEXT I
- PRINT «KOLICHESTVO POLOZHITELNYKH ELEMENTOV» ; KOLPOLVSEH
- PRINT «SUMMA POLOZHITELNYKH ELEMENTOV» ; SUMPOLVSEH
- FOR I = 1 TO N
- SUM_P_EL = 0
- FOR J = 1 TO N
- IF (A(I, J) > 0) THEN SUM_P_EL = SUM_P_EL + A(I, J)
- NEXT J
- PRINT «V» ; I; «STROKE» ; SUM_P_EL; «POLOZHITELNYKH ELEMENTOV»
- NEXT I
- END

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

Рисунок 4 – Результат выполнения второй программы
Задача: В квадратной матрице А(7,7) найти число (количество) отрицательных элементов в области выше главной и ниже побочной диагонали. Поменять местами первый элемент первой строки и последний элемент последней строки матрицы.
Как транспонировать матрицу
wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали авторы-волонтеры.
Количество просмотров этой статьи: 37 455.
Если вы научитесь транспонировать матрицы, то лучше поймете их структуру. Возможно, вы уже знаете о квадратных матрицах и об их симметрии, что поможет вам освоить транспонирование. Помимо прочего, транспонирование помогает переводить векторы в матричную форму и находить векторные произведения. [1] X Источник информации При работе с комплексными матрицами эрмитово-сопряженные (сопряженно-транспонированные) матрицы помогают решить самые разные задачи.
Поменять столбцы матрицы местами
В числовой матрице поменять местами два столбца, т. е. все элементы одного столбца поставить на соответствующие им позиции другого, а его элементы второго переместить в первый.
Столбец матрицы определяется вторым индексом. Поэтому в цикле следует перебирать строки матрицы, т.е. переменная-счетчик будет использоваться в качестве первого индекса двумерного массива.
В каждой строке менять местами элементы с номерами указанных столбцов. От итерации к итерации они не меняются. Обмен можно производить через третью переменную.
Пусть номера столбцов, которые следует поменять местами, задаются путем ввода значений в момент выполнения программы.
Если в языке программирования индексация массивов начинается с нуля, а столбцы указываются, исходя из их фактического положения в матрице (начиная с 1), то следует из переменных, в которых записаны номера столбцов, вычесть единицу перед их использованием в цикле.