Vba. как переделать этот код , что б он считал и менял меж собой минимальные и...

0 голосов
104 просмотров

Vba.
как переделать этот код , что б он считал и менял меж собой минимальные и максимальные элементы не столбцов,А строк?

Private Sub CommandButton1_Click()
Dim s() As Integer, n As Integer, m As Integer
Dim i As Integer, j As Integer
Dim min As Integer, max As Integer

Cells.Clear
n = InputBox("CTROKI", , 4)
m = InputBox("CTOLBEC", , 5)
Randomize
ReDim s(n, m) As Integer
For j = 1 To m
max = -100: min = 100
For i = 1 To n
s(i, j) = Rnd() * 60 - 10
Cells(i + 1, j + 1) = s(i, j)
Cells(i + 3 + n, j + 1) = s(i, j)
If min > s(i, j) Then
min = s(i, j)
q = j
End If
If max < s(i, j) Then
max = s(i, j)
w = j
End If
Next
s(i, q) = min
Cells(w + 3 + n, j + 1) = s(w, j)
s(i, w) = max
Cells(q + 3 + n, j + 1) = s(q, j)
Next
End Sub


Информатика (42 баллов) | 104 просмотров
0

А он у Вас не работает, слетает по неверной индексации на s(i, q) = min

0

s(w, j) = minCells(w + 3 + n, j + 1) = s(w, j)s(q, j) = maxCells(q + 3 + n, j + 1) = s(q, j)NextEnd Subа если заменить вот так?

0

Да запустите проверьте с Вашими же значениями по умолчанию

0

у меня работает,иногда ,непонятно почему,дает осечку. Но не в этом вопрос

0

Вопрос в этом, потому что Вы просите не НАПИСАТЬ, а ПЕРЕДЕЛАТЬ.

0

Для этого должно исходное четко работать

0

Вот этот код работает. Но когда я пытаюсь его переделать как нужно он как раз и начинает ругаться на индексы

0

Это код НЕ РАБОТАЕТ! Я уже написал, что он дает ошибку при значениях по умолчанию.

0

При n=4, m=5 оператор s(i, q) = min не может выполниться для i=5

0

Т.е. при Вашей последней переделке теперь w=5

Дан 1 ответ
0 голосов
Правильный ответ

Private Sub CommandButton1_Click()
    Dim s() As Integer, n As Integer, m As Integer
    Dim i As Integer, j As Integer
    Dim min As Integer, max As Integer, q As Integer, w As Integer
    Cells.Clear
    n = InputBox("CTROKI", , 4)
    m = InputBox("CTOLBEC", , 5)
    Randomize
    ReDim s(n, m) As Integer
    For i = 1 To n
        max = -100: min = 100
        For j = 1 To m
            s(i, j) = Int(Rnd() * 60 - 10)
            Cells(i, j) = s(i, j)
            Cells(i + 2 + n, j) = s(i, j)
            If min > s(i, j) Then
                min = s(i, j)
                q = j
            End If
            If max < s(i, j) Then
                max = s(i, j)
                w = j
            End If
        Next j
        Cells(i + 2 + n, w) = min
        Cells(i + 2 + n, q) = max
    Next i
End Sub


(142k баллов)