Другие языки программирования и технологии

Как сделать задачу в Visual Basic?

Дан двумерный массив размером n*m, заполненный случайными числами. Определить, есть ли в данном массиве столбец, в котором имеются более двух максимальных элементов массива!
A7
Andrey 7
210
вот ответ на VBA, VB нет под рукою:
Sub ppp()
nn = 20
mm = 8
max1 = 0
'заполним массив и вычислим максимум
For ii = 1 To nn
For jj = 1 To mm
Cells(ii, jj).Value = Rnd()
Cells(ii, jj) = Round(Cells(ii, jj), 2)
If Cells(ii, jj) > max1 Then ' тут сразу ищем максимум
max1 = Cells(ii, jj)
For ii1 = 1 To nn ' в этом цикле меняем знак у НЕ максимумов
If ii1 = ii And jj1 = jj Then
Exit For
End If
For jj1 = 1 To mm
If ii1 = ii And jj1 = jj Then
Exit For
End If
If Cells(ii1, jj1) > 0 And Cells(ii1, jj1) < max1 Then
Cells(ii1, jj1) = -Cells(ii1, jj1)
End If
Next jj1
Next ii1
Else
If Cells(ii, jj) < max1 Then
Cells(ii, jj) = -Cells(ii, jj)
End If
End If
Next jj
Next ii
' теперь найдем первый же столбец с 2 и более максимумами
' внутренний цикл - по строкам :)
For jj = 1 To mm
cnt_max = 0 'в этой переменной число максимумов
For ii = 1 To nn
If Cells(ii, jj) = max1 Then
cnt_max = cnt_max + 1
End If
Next ii
If cnt_max >= 2 Then
MsgBox ("в столбце " + jj + " максимумов " + cnt_max)
End If
Next jj
End Sub

идея: меньшие числа меняем знак для того чтобы красным цветом выделить не максимальные, потому что rnd() дает не отрицательные числа :)
округляем до 2-х знаков, чтобы почаще попадались одинаковые )))
вот результат работы:
ВВ
Виктор Вахламов
67 617
Лучший ответ