Осуществить циклический ввод элементов массива целых чисел [ q [ i, j] , i =1,3; j=1,2] с экрана (использовать функцию InputBox), найти наименьшие элементы каждой строки и поставить их первыми. Исходный и измененный массивы отобразить на листе Excel (использовать функцию Cells) помогите ))))))
Аноним:
Если наименьших несколько, их все поставить в начало?
Хотя... чего спрашивать, если всего два элемента? Либо менять их местами в строке, либо не менять.
Ответы
Ответ дал:
2
Sub aaa()
Dim i As Integer, j As Integer, d
ReDim q(1 To 3, 1 To 2)
For i = 1 To 3
For j = 1 To 2
q(i, j) = InputBox("Введите элемент (" + Str(i) + "," + Str(j) + ")")
Next j
Next i
Cells(1, 1).Value = "Исходный массив"
Range(Cells(2, 1), Cells(4, 2)).Value = q
Cells(5, 1).Value = "Результирующий массив"
For i = 1 To 3
If q(i, 1) > q(i, 2) Then
d = q(i, 1): q(i, 1) = q(i, 2): q(i, 2) = d
End If
Next i
Range(Cells(6, 1), Cells(8, 2)).Value = q
End Sub
Dim i As Integer, j As Integer, d
ReDim q(1 To 3, 1 To 2)
For i = 1 To 3
For j = 1 To 2
q(i, j) = InputBox("Введите элемент (" + Str(i) + "," + Str(j) + ")")
Next j
Next i
Cells(1, 1).Value = "Исходный массив"
Range(Cells(2, 1), Cells(4, 2)).Value = q
Cells(5, 1).Value = "Результирующий массив"
For i = 1 To 3
If q(i, 1) > q(i, 2) Then
d = q(i, 1): q(i, 1) = q(i, 2): q(i, 2) = d
End If
Next i
Range(Cells(6, 1), Cells(8, 2)).Value = q
End Sub
VBA во всей красе. Элементами строки могут быть данные любого типа (числа, строки, даты), главное, чтобы их можно было сравнивать друг с другом. ReDim и циклы for введены исключительно из-за требования работы с inputbox, а если бы данные считывались из ячеек таблицы, было бы достаточного одного оператора присваивания и размеры массива отрегулировались бы сами.
Вас заинтересует
2 года назад
2 года назад
2 года назад
7 лет назад
7 лет назад
9 лет назад