Страница: 1 |
Страница: 1 |
Вопрос: Проблема с ср. значением
Добавлено: 11.02.09 21:17
Автор вопроса: Incognito
Задание такое: Вычислить сумму элементов массива, которые меньше средрего значения.
Сумма вычисляется так :
Public Function My_Sum(N As Integer)
Dim A(10) As Single
Dim Sum As Single, i As Integer
Sum = 0
For i = 1 To N
A(i) = Cells(i + 1, 1).Value
Sum = Sum + A(i)
Next i
My_Sum = Sum
End Function
Ср.значение :
Public Function My_Average(N As Integer)
Dim A(10) As Single
Dim Sum As Single, i As Integer
Sum = 0
For i = 1 To N
A(i) = Cells(i + 1, 1).Value
Sum = Sum + A(i)
Next i
My_Average = Sum / N
End Function
а как это всё совместить и добавить If .... ????
Ответы
Всего ответов: 15
Номер ответа: 1
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #1
Добавлено: 11.02.09 22:43
Номер ответа: 2
Автор ответа:
Incognito
Вопросов: 5
Ответов: 25
Профиль | | #2
Добавлено: 11.02.09 23:04
ээ..честно я не понял, куда это вставлять и что с этим сделать?
мне надо, чтобы в 1 функции было то что я ищу СУММУ < ср. арифм.
Номер ответа: 3
Автор ответа:
Incognito
Вопросов: 5
Ответов: 25
Профиль | | #3
Добавлено: 11.02.09 23:05
Public Function My_Average(N As Integer)
Dim A(10) As Single
Dim Sum As Single, i As Integer
Sum = 0
For i = 1 To N
A(i) = Cells(i + 1, 1).Value
Sum = Sum + A(i)
Next i
My_Average = Sum / N
For i=1 to N
IF A(i)>=My_Average then
A(i) = Cells(i + 1, 1).Value
Sum = Sum + A(i)
end if
Next i
End Function
Вот функция, но она вычисляет только ср. арифм чисел
Номер ответа: 4
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #4
Добавлено: 11.02.09 23:51
Она вычисляет все что вам требуется, чем она вас не устраивает?
Разве что вы забыли обнулить сумму перед вторым циклом.
Номер ответа: 5
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #5
Добавлено: 12.02.09 01:41
аффтар, пеши исчо! ))))))))
для VBA это самый актуальный пример!!!
LINQ for VBA это что то новенькое ))
Номер ответа: 6
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #6
Добавлено: 12.02.09 07:33
Brand, у тебя Avg будет для каждого элемента вычисляться, получится сложность O(N^2)
Вот верное решение за O(N):
Номер ответа: 7
Автор ответа:
fAndOrIn
Вопросов: 5
Ответов: 344
Профиль | | #7
Добавлено: 12.02.09 08:11
Номер ответа: 8
Автор ответа:
fAndOrIn
Вопросов: 5
Ответов: 344
Профиль | | #8
Добавлено: 12.02.09 08:43
Номер ответа: 9
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #9
Добавлено: 12.02.09 12:14
Sharp, у меня была мысль на этот счет но почему-то не посчитал нужным перепроверить
Номер ответа: 10
Автор ответа:
Incognito
Вопросов: 5
Ответов: 25
Профиль | | #10
Добавлено: 12.02.09 18:53
Dim A(10) As Single 'почему 10 - Потому что чисел 10...
My_Average = Sum / N'??????????? - это СУММА ВСЕХ ЧИСЕЛ делится на 10 и находится их среднее значение
'A(i) = Cells(i + 1, 1).Value'зачем, если A(i)забито в предыдущем цикле? - эээ..не знаю...)
Народ, мне нужно найти СУММУ, которая меньше СРЕДНЕГО ЧИСЛА...как это всё воссоединить и добавить ещё что?
И тут не надо замудренное что-то...)) потому что из последнего очень много чего я не понимаю...
Номер ответа: 11
Автор ответа:
Incognito
Вопросов: 5
Ответов: 25
Профиль | | #11
Добавлено: 12.02.09 18:54
fAndOrIn .... АААААААААА.....огромное спасибо, всё работает))))
Номер ответа: 12
Автор ответа:
fAndOrIn
Вопросов: 5
Ответов: 344
Профиль | | #12
Добавлено: 12.02.09 19:31
всего-то надо было! первое
афтары, имейте ввиду.
Номер ответа: 13
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #13
Добавлено: 13.02.09 03:55
Я че-то не понял, до сих пор не смогли решить эту архисложную задачу? О_О
Номер ответа: 14
Автор ответа:
fAndOrIn
Вопросов: 5
Ответов: 344
Профиль | | #14
Добавлено: 13.02.09 07:44
Вниманию присутствующих! Отвечая на вопрос (по-моему) следует следить за темой этого вопроса(VBA в конкретном примере)!
Ответ типа
Номер ответа: 15
Автор ответа:
fAndOrIn
Вопросов: 5
Ответов: 344
Профиль | | #15
Добавлено: 13.02.09 08:28