Visual Basic. Двумерные массивы. Глезденев В.И., Удальцова А.И. – учителя информатики СОШ 3 г. Сосновый Бор
A(1,1)A(1,2)A(1,3)…A(1,N) A(2,1)A(2,2)A(2,3)…A(2,N) A(3,1)A(3,2)A(3,3)…A(3,N) …………… A(N,1)A(N,2)A(N,1)… A(N,N) Размерность массива – (количество строк х количество столбцов) N x N
Элемент двумерного массива. A(1,1)A(1,2)A(1,3)…A(1,N) A(2,1)A(2,2)A(2,3)…A(2,N) A(3,1)A(3,2)A(3,3)…A(3,N) …………… A(N,1)A(N,2)A(N,1)… A(N,N) A(3,2) Элемент массива A 3-й строки 2-го столбца
Заполнение двумерного массива 10x12. Dim A(10,12) - определение массива 10х12 For i=1 to 10 For i=1 to 10 - цикл по строкам For k=1 to 12 For k=1 to 12 - цикл по столбцам A(i, k)=Fix(rnd*90+10) – случайное целое из отрезка[10, 100] Next k Next i
Вывод на форму двумерного массива. For i=1 to 10 For k=1 to 12 Pset (k*400, i*200),RGB(200,200,200) Print A(i, k) Next k Next i
Строки двумерного массива. A(1,1) A(1,2) A(1,3) … A(1,N) Первая строка: A(3,1) A(3,2) A(3,3) … A(3,N) Третья строка:
Задача: Выделение строки (столбца). массив 10х10 исключение случайного ввода Do n1 = InputBox("введите номер строки", "запрос строки") Loop Until (n1 =1) n1 = Fix(Val(n1))
Сумма 5-й строки: S5=0 For k=1 to 12 S5=S5+A(5,k) Next k
Максимальный элемент 7-й строки. m7=A(7,1): n7=1 For k=2 to 12 If a(7,k) > m7 Then m7=A(7,k): n7=k End If Next k
Замена строк: 4 8 A(4,1) A(4,2) A(4,3) … A(4,12) A(8,1) A(8,2) A(8,3) … A(8,12) For k=1 to 12 sp=A(4,k): A(4,k)=A(8,k): A(8,k)=sp Next k
Задача: Замена строк (столбцов).
Столбцы двумерного массива. Первый столбец: Третий столбец: A(1,1) A(2,1) A(3,1) … A(N,1) A(1,3) A(2,3) A(3,3) … A(N,3)
Сумма 4-го столбца: S4=0 For i=1 to 10 S4=S4+A(i,4) Next i
Минимальный 6-го столбца. m6=A(1,6): n6=1 For i=2 to 10 If A(i,6) < m6 Then m6=A(i,6): n6=i End If Next i
Первый столбец: Третий столбец: A(1,2) A(2,2) A(3,2) … A(10,2) A(1,5) A(2,5) A(3,5) … A(10,5) Замена столбцов: 2 5
For i=1 to 10 sp=A(i,2)A(i,2)=A(i,5)A(i,5)=sp Next i
Диагональные элементы двумерного массива NxN. A(1,1)A(1,2)A(1,3)…A(1,N) A(2,1)A(2,2)A(2,3)…A(2,N) A(3,1)A(3,2)A(3,3)…A(3,N) …………… A(N,1)A(N,2)A(N,1)…A(N,N) Главная (первая) диагональ)
Диагональные элементы двумерного массива NxN. A(1,1)A(1,2)A(1,3)…A(1,N) A(2,1)A(2,2)A(2,3)…A(2,N) A(3,1)A(3,2)A(3,3)…A(3,N) …………… A(N,1)A(N,2)A(N,1)…A(N,N) Вторая диагональ:
Сумма диагональных элементов массива NxN. S1=0: S2=0 For i=1 to N S1=S1+A(i,i)S2=S2+A(N-i+1,i) Next i
1-я схема замены диагональных элементов массива NxN. A(1,1)A(1,2)A(1,3)…A(1,N) A(2,1)A(2,2)A(2,3)…A(2,N) A(3,1)A(3,2)A(3,3)…A(3,N) …………… A(N,1)A(N,2)A(N,1)…A(N,N)
For i=1 to N sp=A(i,i)A(i,i)=A(N-i+1,i)A(N-i+1,i)=sp Next i
2-я схема замены диагональных элементов массива NxN. Самостоятельно!!
Задача: определить и выделить в двумерном массиве минимальные элементы строк.
Задача: Определить и выделить в двумерном массиве минимальные элементы строк. Записать значения и положение в другой массив.
For i = 1 To 10 m = a(i, 1): n = 1 For k = 1 To 10 If a(i, k) < m Then m = a(i, k): n = k End If Next k ForeColor = RGB(255, 0, 0) PSet (n * 400, i * 200), RGB(200, 200, 200) Print a(i, n) ForeColor = RGB(0, 0, 0) b(i, 1) = a(i, n): b(i, 2) = i: b(i, 3) = n Next i
Max Задача: Определить и выделить в двумерном массиве минимальные элементы строк. Записать значения и положение в другой массив. Определить максимальный.
For i = 1 To 10 For k = 1 To 3 PSet (k * , i * 200) Print b(i, k) Next k Next i mb = b(1, 1): For i = 1 To 10 If b(i, 1) > mb Then mb = b(i, 1): ns1 = i: ns2 = b(i, 3) End If Next i PSet (5400, 2500), RGB(200, 200, 200) Print mb; " "; ns1; " "; ns2
Задача: Удаление строки со сдвигом.
If (n>=1) AND (n =1) AND (n