profile
Опубликовано 6 лет назад по предмету Информатика от Яна999

Помогите пожалуйста! Язык VBA. Не могу задать замену окончательной суммы.
Задача:
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 100 включительно. Опишите на VBA алгоритм, который находит сумму элементов массива меньших 80 и при этом, кратных 5, а затем заменяет каждый такой элемент на число, равное найденной сумме. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести измененный массив, каждый элемент выводится с новой строчки. Например, для исходного массива из шести элементов:
14
15
27
20
95
4
программа должна вывести следующий массив
14
35
27
35
95
4

Sub program()
Dim a(1 To 30) As Integer, i As Integer, Sum As Integer

For i = 1 To 30
a(i) = Int(100 * Rnd)
Sheets("Лист1").Cells(i, 1) = a(i)
Next i

Sum = 0
For i = 1 To 30
If a(i) < 80 And a(i) Mod 5 = 0 Then
Sum = Sum + a(i)
a(i) = Sum
End If
Sheets("Лист1").Cells(i, 2) = a(i)
Next i

Sheets("Лист1").Cells(1, 3) = Sum
End Sub

  1. Ответ
    Ответ дан DonPedro80
    Sub program()
        Const n = 30
        Dim a(1 To 30) As Integer, i As Integer, Sum As Integer
        For i = 1 To n
            a(i) = Int(100 * Rnd)
            Sheets("Лист1").Cells(i, 1) = a(i)
        Next i
        Sum = 0
        For i = 1 To n
            If a(i) < 80 And a(i) Mod 5 = 0 Then
                Sum = Sum + a(i)
            End If
        Next i
        For i = 1 To n
            If a(i) < 80 And a(i) Mod 5 = 0 Then
                Sheets("Лист1").Cells(i, 2) = Sum
            Else
                Sheets("Лист1").Cells(i, 2) = a(i)
            End If
        Next i
    End Sub

    1. Ответ
      Ответ дан DonPedro80
      И еще на будущее совет. Вставляете в проекте макрос на тот же лист, с которым работаете по вводу и выводу. Тогда не надо будет указывать Sheets("Лист1"). А сразу от Cells начинать.
    2. Ответ
      Ответ дан Яна999
      Большое спасибо!
    3. Ответ
      Ответ дан DonPedro80
      пожалуйста
Самые новые вопросы