Помогите,пожалуйста, написать программу ** языке Бэйсик. Вычислить среднеарифместическое...

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

Помогите,пожалуйста, написать программу на языке Бэйсик. Вычислить среднеарифместическое положительных элементов для массивов A(N1), B(N2), C(N3). N1,N2,N3 <=0. Используя подпрограммы и функции. Заранее спасибо!


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

Не может быть в массиве 0 и менее элементов

0

<=100

0

Ваша функция неверно написана

0

Подскажите,пожалуйста, как правильно обратиться к подпрограмме?

0

Public Function s(t, m, h, n As Integer) As IntegerDim s, n As Integers = 0n = 1For i = 1 To mIf h(i, j) > 0 Thens = s + h(i, j)n = n + 1End Function

0

Dim i, j, s, n As IntegerDim F As DoubleRandomizeFor i = 1 To 5For j = 1 To 5A(i, j) = Rnd * 200 - 100Cells(i, j) = A(i, j)Next jNext iFor i = 1 To 3For j = 1 To 3B(i, j) = Rnd * 200 - 100Cells(i + 7, j + 12) = B(i, j)Next jNext iFor i = 1 To 4For j = 1 To 4C(i, j) = Rnd * 200 - 100Cells(i + 10, j + 5) = C(i, j)Next jNext is = 0n = 1F = s / nMsgBox FMsgBox nEnd Sub

0

Да и Sum написана неверно в части параметра-массива

0

А "не так" там то, например, что Вы к функции Sum так ни разу и не обратились...

0

Ссылки на хостинг за пределы данного сайта недопустимы и наказуемы

0

http://cs633631.vk.me/v633631631/37677/vKHkJVv6SMo.jpg подскажите,пожалуйста,что здесь не так?

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

Sub z()
    Range(Cells(1, 1), Cells(100, 100)).Clear
    n1=5
    n2=3
    n3=4

    k = 1
    A = InitMatrix(n1, k, 1)
    k = k + n1 + 2
    B = InitMatrix(n2, k, 1)
    k = k + n2 + 2
    C = InitMatrix(n3, k, 1)

End Sub

Function InitMatrix(n, cx, cy)
    ReDim A(n, n)
    For i = LBound(A, 1) To UBound(A, 1)
        For j = LBound(A, 2) To UBound(A, 2)
            A(i, j) = Rnd * 200 - 100
            Cells(cx + i, cy + j) = A(i, j)
        Next
    Next

    Cells(cx, cy + n + 1) = "PositiveAverage ="
    Cells(cx, cy + n + 2) = PositiveAverage(A)

    InitMatrix = A
End Function

Function PositiveAverage(A)
    For i = LBound(A, 1) To UBound(A, 1)
        For j = LBound(A, 2) To UBound(A, 2)
            If A(i, j) > 0 Then
                s = s + A(i, j)
                k = k + 1
            End If
        Next
    Next

    PositiveAverage = s / k
End Function

(53.1k баллов)
0

Не знаю, о каком стирании речь, на рабочем листе книги по-прежнему "блюдо спагетти".

0

не знаю о чем вы. там матрицы выводит по порядку и пустая строка между выводами

0

Вы шутите? Если да, то это странно. У Вас первая матрица выводится в A1:F6, вторая в A3:D6, третья в A5:E9 и две последующие частично перетирают первую. То же и с выводом среднего. У меня стойкое ощущение, что Вы не смотрите, что на листе рабочей книге творится.

0

спасибо

0

Это не проблема

0

время вышло

0

Почему не можете?

0

Sub z()
Range(Cells(1, 1), Cells(100, 100)).Clear
n1=5
n2=3
n3=4

k = 1
A = InitMatrix(n1, k, 1)
k = k + n1 + 2
B = InitMatrix(n2, k, 1)
k = k + n2 + 2
C = InitMatrix(n3, k, 1)

End Sub

0

ааа зря убрала переменные n1, n2, n3. Исправить уже не могу

0

Ура, заработало! ))