Вычисления в прямоугольной матрице - VB
Формулировка задачи:
Добрый вечер !Нужна ваша помощь!
Дана целочисленная прямоугольная матрица. Вычислить:
1)минимальный по модулю элемент массива;
2)сумму модулей элементов , расположенных после первого элемента ,равному нулю.
3)Преобразовать массив таким образом , чтобы в первой его половине распологались элементы , стоявшее в четных позициях , а во второй половине - элементы , стоявшее в нечетных позициях.
похожая тема есть здесь:
но там нужно вычислить в одномерном массиве состоявшим из n целочисленных элементов, а у меня в прямоугольной матрице
Помогите пожалуйста понять разницу
Решение задачи: «Вычисления в прямоугольной матрице»
textual
Листинг программы
Sub Stavr1992()
Dim i%, j%, N%, M%, Min%, A()
Dim K%, R%, Sum%, D%, E%, t%
Cells.Clear
N = Int(InputBox("Введите количество строк", "Ввод данных", 6))
M = Int(InputBox("Введите количество столцов", "Ввод данных", 5))
ReDim A(1 To N, 1 To M)
For i = 1 To N
For j = 1 To M
Cells(i, j) = Int((20 * Rnd) + (-10))
Next j
Next i
Min = Abs(Cells(1, 1))
For i = 1 To N
For j = 1 To M
If Abs(Cells(i, j)) <= Min And Abs(Cells(i, j)) <> 0 Then
Min = Abs(Cells(i, j))
End If
Next j
Next i
Cells(N + 2, 5) = Min
Cells(N + 2, 1) = " Минимальн. по модулю эл-т: Min = "
K = 0: R = 0: Sum = i + j
For i = 1 To N
For j = 1 To M
If Cells(i, j) = 0 And Cells(i, j) < Sum Then
K = i
R = j
End If
Next j
Next i
Cells(N + 3, 5) = K
Cells(N + 3, 1) = " Минимальн. по Sum эл-т: i = "
Cells(N + 4, 5) = R
Cells(N + 4, 1) = " Минимальн. по Sum эл-т: j = "
D = 0
For i = K To UBound(A)
For j = R To M
If Cells(i, j) <> 0 Then
D = D + Cells(i, j)
End If
Next j
Next i
Cells(N + 5, 5) = D
Cells(N + 5, 1) = " Сумма после 1-го нуля: D = "
'сделал самую быструю сортировку
'возможно ошибаюсь, ребята подскажите: как верно?
E = Cells((i + j) \ 2)
Do
While Cells(i) < E: i = i + 1: Wend
While Cells(j) < E: j = j - 1: Wend
If i <= j Then
t = Cells(i): Cells(i) = Cells(j): Cells(j) = t
i = i + 1: j = j - 1
End If
Loop While i <= j
End Sub