Вопрос задан 14.09.2018 в 16:30. Предмет Информатика. Спрашивает Каляшина Яна.

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
0 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


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Код, который вы предоставили, выполняет следующие действия: создает массив s(n, m) размерности n x m, заполняет его случайными числами от -10 до 50, а затем находит минимальные и максимальные значения в каждом столбце. Он меняет эти значения и выводит результат в соседние столбцы.

Если я правильно понял ваш запрос, вы хотите изменить код так, чтобы он работал с минимальными и максимальными значениями не по столбцам, а по строкам. Давайте внесем соответствующие изменения в код:

```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 Dim minRowIndex As Integer, maxRowIndex As Integer Cells.Clear n = InputBox("CTROKI", , 4) m = InputBox("CTOLBEC", , 5) Randomize ReDim s(1 To n, 1 To m) As Integer ' Заполнение массива случайными значениями от -10 до 50 For i = 1 To n For j = 1 To m s(i, j) = Int(Rnd() * 60 - 10) Cells(i + 1, j + 1) = s(i, j) Next j Next i ' Инициализация min и max значениями, выходящими за пределы возможных значений в массиве min = 100 max = -100 ' Поиск минимальных и максимальных значений по строкам For i = 1 To n For j = 1 To m If min > s(i, j) Then min = s(i, j) minRowIndex = i End If If max < s(i, j) Then max = s(i, j) maxRowIndex = i End If Next j ' Замена минимального значения в строке на максимальное и наоборот s(minRowIndex, j) = max s(maxRowIndex, j) = min Next i ' Вывод результата For i = 1 To n For j = 1 To m Cells(i + 3, j + 1) = s(i, j) Next j Next i End Sub ```

Этот код ищет минимальные и максимальные значения в каждой строке массива и меняет их местами. Результат выводится в соседние столбцы.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос