• Написать программу в VBA. Заданы массивы А(40,40), В(20,20) и С(30,30).Для каждого из заданных массивов определить количество элементов в строке превышающих среднее арифметическое значение элементов массива

Ответы 6

  • Вы хотя бы комментарии почитали в тексте программы, там по-русски написано про двухмерные массивы.
  • Это VBA, он позволяет работать с динамическими массивами. Их размеры можно менять как угодно в процессе работы.
    • Автор:

      scrappy
    • 5 лет назад
    • 0
  • а точно,зарешался) извините)
    • Автор:

      earlbb3d
    • 5 лет назад
    • 0
  • как найти четный элемент в двухмерном массиве?
  • можно так? if a(i,j) Mod 2 =0 Then ?
  • Option ExplicitFunction Mean2(A As Variant) As Double    'Возвращает среднее арифметическое элементов двухмерного массива    Dim i As Integer, j As Integer, S As Variant, n As Integer    S = 0    For i = LBound(A, 1) To UBound(A, 1)        For j = LBound(A, 2) To UBound(A, 2)            S = S + A(i, j)        Next j    Next i    n = (UBound(A, 1) - LBound(A, 1) + 1) * (UBound(A, 2) - LBound(A, 1) + 1)    Mean2 = S / nEnd FunctionSub InitMas2(A As Variant, amin As Variant, amax As Variant)    'Инициализирует элементы двухмерного массива датчиком случайных чисел    'amin и amax задают диапазон часел для инициализации    Dim i As Integer, j As Integer, typ As Integer, ik As Integer, rk As Single    Dim imin As Integer, jmin As Integer, imax As Integer, jmax As Integer    imin = LBound(A, 1)    imax = UBound(A, 1)    jmin = LBound(A, 2)    jmax = UBound(A, 2)    typ = VarType(A) - 8192    Select Case typ    Case 2, 3, 17        ik = Int(amax - amin + 1)        For i = imin To imax            For j = jmin To jmax                A(i, j) = Int(Rnd * ik + amin)            Next j        Next i    Case Else        rk = amax - amin + 1        For i = imin To imax            For j = jmin To jmax                A(i, j) = Rnd * rk + amin            Next j        Next i    End SelectEnd SubSub OutMas(A As Variant, prow As Integer, pcol As Integer)    'Размещает элементы одномерного массива на текущем листе рабочей книги    'Ячейка в левом верхнем углу имеет адрес (prow,pcol)    'Размещение идет по колонке    Dim i As Integer, ic As Integer    Dim imin As Integer, imax As Integer    imin = LBound(A, 1)    imax = UBound(A, 1)    ic = prow    For i = imin To imax        Cells(ic, pcol).Value = A(i)        ic = ic + 1    Next iEnd SubSub OutMas2(A As Variant, prow As Integer, pcol As Integer)    'Размещает элементы двухмерного массива на текущем листе рабочей книги    'Ячейка в левом верхнем углу имеет адрес (prow,pcol)    Dim i As Integer, j As Integer, ic As Integer, jc As Integer    Dim imin As Integer, jmin As Integer, imax As Integer, jmax As Integer    imin = LBound(A, 1)    imax = UBound(A, 1)    jmin = LBound(A, 2)    jmax = UBound(A, 2)    ic = prow    For i = imin To imax        jc = pcol        For j = jmin To jmax            Cells(ic, jc).Value = A(i, j)            jc = jc + 1        Next j        ic = ic + 1    Next iEnd SubSub NumElems2(A As Variant, B() As Integer, pm As Double)    ' Находит в каждой строке двухмерного массива а количество элементов,    ' превышающих среднее арифметическое всех элементов этого массива pm    ' и помещает это количство в одномерный массив b.    Dim i As Integer, j As Integer, kol As Integer    Dim imin As Integer, jmin As Integer, imax As Integer, jmax As Integer    imin = LBound(A, 1)    imax = UBound(A, 1)    jmin = LBound(A, 2)    jmax = UBound(A, 2)    For i = imin To imax        kol = 0        For j = jmin To jmax            If A(i, j) > pm Then kol = kol + 1        Next j        B(i) = kol    Next iEnd SubSub main()    Const m = 40, n = 20, p = 30    Dim A(1 To m, 1 To m) As Integer, R(1 To m) As Integer    Dim B(1 To n, 1 To n) As Single, S(1 To n) As Integer    Dim C(1 To p, 1 To p) As Integer, T(1 To p) As Integer    Dim i As Integer, mm As Double    Randomize Timer    InitMas2 A, -1000, 1000    OutMas2 A, 1, 1    mm = Mean2(A)    NumElems2 A, R, mm    OutMas R, 1, m + 2        InitMas2 B, 0, 1800    OutMas2 B, 42, 1    mm = Mean2(B)    NumElems2 B, S, mm    OutMas S, 42, n + 2        InitMas2 C, -1200, 800    OutMas2 C, 63, 1    mm = Mean2(C)    NumElems2 C, T, mm    OutMas T, 63, p + 2End SubОсобенность программы: позволяет работать с массивами любых допустимых числовых типов. Размер массивов фактически ограничен только размером свободной оперативной памяти компьютера.Для запуска не забудьте разрешить исполнение макросы на уровне безопасности не выше "Средний" и дать доверенный доступ к проектам VBA.
    • Автор:

      wilfredo
    • 5 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years