Visual Basic . Двумерные массивы.
description
Transcript of Visual Basic . Двумерные массивы.
Visual BasicVisual Basic. . Двумерные массивы.Двумерные массивы.
Глезденев В.И., Удальцова А.И. – учителя информатики СОШ №3 г. Сосновый Бор
A(1,1)A(1,1) A(1,2)A(1,2) A(1,3)A(1,3) …… A(1,N)A(1,N)
A(2,1)A(2,1) A(2,2)A(2,2) A(2,3)A(2,3) …… A(2,N)A(2,N)
A(3,1)A(3,1) A(3,2)A(3,2) A(3,3)A(3,3) …… A(3,N)A(3,N)
…… …… …… …… ……
A(N,1)A(N,1) A(N,2)A(N,2) A(N,1)A(N,1) …… A(A(NN,,NN))
Размерность массива – Размерность массива – ((количество строк х количество строк х количество столбцовколичество столбцов)) N x NN x N
Элемент двумерного массива.Элемент двумерного массива.A(1,1)A(1,1) A(1,2)A(1,2) A(1,3)A(1,3) …… A(1,N)A(1,N)
A(2,1)A(2,1) A(2,2)A(2,2) A(2,3)A(2,3) …… A(2,N)A(2,N)
A(3,1)A(3,1) A(3,2)A(3,2) A(3,3)A(3,3) …… A(3,N)A(3,N)
…… …… …… …… ……
A(N,1)A(N,1) A(N,2)A(N,2) A(N,1)A(N,1) …… A(A(NN,,NN))
A(3,2) Элемент массива Элемент массива A A 3-3-й строки 2-го столбцай строки 2-го столбца
Заполнение двумерного Заполнение двумерного массивамассива 10x12 10x12..
Dim A(10,12)Dim A(10,12) - определение массива 10х12- определение массива 10х12
For i=1 to For i=1 to 1010 - цикл по строкам
For k=1 to For k=1 to 1122 - цикл по столбцам
A(i, k)=Fix(rnd*90+10) A(i, k)=Fix(rnd*90+10) – – случайное целое случайное целое из отрезка из отрезка[[10, 10010, 100] ]
Next kNext k
Next iNext i
Вывод на форму Вывод на форму двумерного двумерного массива.массива.For i=1 to For i=1 to 1010
For k=1 to For k=1 to 1122
Pset (k*400, i*200),RGB(200,200,200)Pset (k*400, i*200),RGB(200,200,200)
Print A(i, k)Print A(i, k)
Next kNext k
Next iNext i
Строки двумерного массива.Строки двумерного массива.
A(A(11,1),1) A(A(11,2),2) A(A(11,3),3) …… A(A(11,N),N)
Первая строка:Первая строка:
A(A(33,1),1) A(A(33,2),2) A(A(33,3),3) …… A(A(33,N),N)
Третья строка:Третья строка:
Задача:Задача: Выделение строки Выделение строки (столбца).(столбца). массив 10х10массив 10х10
‘‘исключение случайного вводаисключение случайного ввода DoDon1 = InputBox("введите номер строки", "запрос строки")n1 = InputBox("введите номер строки", "запрос строки")Loop UntilLoop Until ( (nn1 < 11) 1 < 11) AndAnd ( (nn1 >1 >=1=1))n1 = Fix(Val(n1))n1 = Fix(Val(n1))
Сумма 5-й строки:Сумма 5-й строки:
S5=0S5=0
For k=1 to For k=1 to 1122
S5=S5+A(S5=S5+A(55,k),k)
Next kNext k
Максимальный элемент Максимальный элемент 7-й строки.7-й строки.
m7=A(m7=A(77,1): n7=1,1): n7=1
For k=2 to For k=2 to 1122
If a(If a(77,k) > m7 Then,k) > m7 Then
m7=A(m7=A(77,k): n7=k,k): n7=k
End IfEnd If
Next kNext k
Замена строк:Замена строк: 4 4 88A(A(44,1),1) A(A(44,2),2) A(A(44,3),3) …… A(A(44,,1212))
A(A(88,1),1) A(A(88,2),2) A(A(88,3),3) …… A(A(88,,1212))
For k=For k=11 to to 1122
sp=A(sp=A(44,k): A(,k): A(44,k)=A(,k)=A(88,k): ,k): A(A(88,k)=sp,k)=sp
Next kNext k
Задача:Задача: Замена строк (столбцов).Замена строк (столбцов).
Столбцы двумерного массива.Столбцы двумерного массива.
Первый Первый столбец:столбец:
Третий Третий столбец:столбец:
A(1,A(1,11))
A(2,A(2,11))
A(3,A(3,11))
……
A(N,A(N,11))
A(1,A(1,33))
A(2,A(2,33))
A(3,A(3,33))
……
A(N,A(N,33))
Сумма Сумма 44-го столбца:-го столбца:
SS44=0=0
For i=1 to For i=1 to 1100
S4=S4+A(i,S4=S4+A(i,44))
Next iNext i
Минимальный 6-го столбца.Минимальный 6-го столбца.
m6=A(1,m6=A(1,66): n6=1): n6=1
For i=2 to For i=2 to 1100
If A(i,If A(i,66) < m6 Then) < m6 Then
m6=A(i,m6=A(i,66): n6=i): n6=i
End IfEnd If
Next iNext i
Первый Первый столбец:столбец:
Третий Третий столбец:столбец:
A(1,A(1,22))
A(2,A(2,22))
A(3,A(3,22))
……
A(A(1010,,22))
A(1,A(1,55))
A(2,A(2,55))
A(3,A(3,55))
……
A(A(1010,,55))
Замена столбцов:Замена столбцов: 22 55
Замена столбцов:Замена столбцов: 22 55
For i=For i=11 to to 1100
sp=A(i,2)sp=A(i,2)
A(i,2)=A(i,5)A(i,2)=A(i,5)
A(i,5)=spA(i,5)=sp
Next iNext i
Диагональные элементы Диагональные элементы двумерного массивадвумерного массива NxN NxN..
A(1,1)A(1,1) A(1,2)A(1,2) A(1,3)A(1,3) …… A(1,N)A(1,N)
A(2,1)A(2,1) A(2,2)A(2,2) A(2,3)A(2,3) …… A(2,N)A(2,N)
A(3,1)A(3,1) A(3,2)A(3,2) A(3,3)A(3,3) …… A(3,N)A(3,N)
…… …… …… …… ……
A(N,1)A(N,1) A(N,2)A(N,2) A(N,1)A(N,1) …… A(N,N)A(N,N)
Главная (первая) диагональ)Главная (первая) диагональ)
Диагональные элементы Диагональные элементы двумерного массивадвумерного массива NxN NxN..
A(1,1)A(1,1) A(1,2)A(1,2) A(1,3)A(1,3) …… A(1,N)A(1,N)
A(2,1)A(2,1) A(2,2)A(2,2) A(2,3)A(2,3) …… A(2,N)A(2,N)
A(3,1)A(3,1) A(3,2)A(3,2) A(3,3)A(3,3) …… A(3,N)A(3,N)
…… …… …… …… ……
A(N,1)A(N,1) A(N,2)A(N,2) A(N,1)A(N,1) …… A(N,N)A(N,N)
Вторая диагональ:Вторая диагональ:
Сумма диагональных Сумма диагональных элементовэлементов массива массива NxNNxN..
SS11=0: S2=0=0: S2=0
For i=1 to NFor i=1 to N
S1=S1+A(i,i)S1=S1+A(i,i)
S2=S2+A(N-i+1,i)S2=S2+A(N-i+1,i)
Next iNext i
11-я схема замены диагональных -я схема замены диагональных элементовэлементов массива массива NxNNxN..
A(1,1)A(1,1) A(1,2)A(1,2) A(1,3)A(1,3) …… A(1,N)A(1,N)
A(2,1)A(2,1) A(2,2)A(2,2) A(2,3)A(2,3) …… A(2,N)A(2,N)
A(3,1)A(3,1) A(3,2)A(3,2) A(3,3)A(3,3) …… A(3,N)A(3,N)
…… …… …… …… ……
A(N,1)A(N,1) A(N,2)A(N,2) A(N,1)A(N,1) …… A(N,N)A(N,N)
11-я схема замены диагональных -я схема замены диагональных элементовэлементов массива массива NxNNxN..
For i=1 to NFor i=1 to N
sp=A(i,i)sp=A(i,i)
A(i,i)=A(N-i+1,i)A(i,i)=A(N-i+1,i)
A(N-i+1,i)=spA(N-i+1,i)=sp
Next iNext i
2-я схема замены диагональных 2-я схема замены диагональных элементовэлементов массива массива NxNNxN..
Самостоятельно!!Самостоятельно!!
Задача:Задача: определить и выделить определить и выделить в двумерном массиве в двумерном массиве минимальные элементы строк.минимальные элементы строк.
Задача:Задача: Определить и выделить в Определить и выделить в двумерном массиве минимальные двумерном массиве минимальные элементы строк. Записать значения и элементы строк. Записать значения и положение в другой массив.положение в другой массив.
For i = 1 To 10For i = 1 To 10m = a(i, 1): n = 1m = a(i, 1): n = 1For k = 1 To 10For k = 1 To 10If a(i, k) < m ThenIf a(i, k) < m Thenm = a(i, k): n = km = a(i, k): n = kEnd IfEnd IfNext kNext kForeColor = RGB(255, 0, 0)ForeColor = RGB(255, 0, 0)PSet (n * 400, i * 200), RGB(200, 200, 200)PSet (n * 400, i * 200), RGB(200, 200, 200)Print a(i, n)Print a(i, n)ForeColor = RGB(0, 0, 0)ForeColor = RGB(0, 0, 0)b(i, 1) = a(i, n): b(i, 2) = i: b(i, 3) = nb(i, 1) = a(i, n): b(i, 2) = i: b(i, 3) = nNext iNext i
Max
Задача:Задача: Определить и выделить в Определить и выделить в двумерном массиве минимальные двумерном массиве минимальные элементы строк. Записать значения и элементы строк. Записать значения и положение в другой массив. положение в другой массив. Определить максимальный.Определить максимальный.
For i = 1 To 10For i = 1 To 10For k = 1 To 3For k = 1 To 3PSet (k * 400 + 5000, i * 200)PSet (k * 400 + 5000, i * 200)Print b(i, k)Print b(i, k)Next kNext kNext iNext imb = b(1, 1):mb = b(1, 1):For i = 1 To 10For i = 1 To 10If b(i, 1) > mb ThenIf b(i, 1) > mb Thenmb = b(i, 1): ns1 = i: ns2 = b(i, 3)mb = b(i, 1): ns1 = i: ns2 = b(i, 3)End IfEnd IfNext iNext iPSet (5400, 2500), RGB(200, 200, 200)PSet (5400, 2500), RGB(200, 200, 200)Print mb; " "; ns1; " "; ns2Print mb; " "; ns1; " "; ns2
Задача:Задача: Удаление строки со Удаление строки со сдвигом.сдвигом.
If (n>=1) AND (n<10) then If (n>=1) AND (n<10) then For i = n To 9For i = n To 9For k = 1 To 10For k = 1 To 10a(i, k) = a(i + 1, k)a(i, k) = a(i + 1, k)Next kNext kNext iNext iEnd ifEnd if
For k = 1 To 10For k = 1 To 10a(10, k) = 0a(10, k) = 0Next kNext k