Среднее геометрическое

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Kepmann
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 18.06.2005 (Сб) 14:19

Среднее геометрическое

Сообщение Kepmann » 19.05.2007 (Сб) 18:15

Суть задания - найти среднее геометрическое рядя чисел в диапазоне от -500 до 500 (всего чисел до 100).

При попытке посчитать это, возникает "Run-time error '5'. Invalid procedure call or argument."
Вот пример кода, приблизительно имитирующий происходящее:
Код: Выделить всё
Dim x, z, Step As Integer
Dim res As Variant
z = 1
Step = Int(Rnd * 100)
For x = 1 To 100
z = z * Int(Rnd * 1000 - 500)
Next x
res = z ^ (1 / Step)



Ошибка возникает на последней строки... Как ее избежать? (видимо, надо что-то с типами переменных мутить)

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Сообщение VB-constructor » 19.05.2007 (Сб) 19:05

1) Variant измени на Integer
2) проверяй, чтобы Step - не равнялось нуля
3) Dim x, z, - эти тоже у тебя как Variant пойдут, почитай про объявление переменных :)
Человек рождён для того, чтобы достичь жизни...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.05.2007 (Сб) 19:16

Среднее геометрическое определено только для набора неотрицательных чисел.
Изображение

Kepmann
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 18.06.2005 (Сб) 14:19

Сообщение Kepmann » 19.05.2007 (Сб) 19:37

Среднее геометрическое определено только для набора неотрицательных чисел.


Как то я об этом не подумал... ну да... тогда проблема решена 8)
Спасибо

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 21.05.2007 (Пн) 17:08

tyomitch
Среднее геометрическое определено только для набора неотрицательных чисел

Неверно, нуля тоже не должно быть. Зато можно найти среднее геометрическое, если ВСЕ числа отрицательны.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.05.2007 (Пн) 18:47

Почему это нуля не должно быть?
Изображение

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 22.05.2007 (Вт) 9:43

tyomitch
Вообще я не помню определения, но смысл теряется - если есть ноль, то и среднее геометрическое тоже ноль.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.05.2007 (Вт) 10:44

А когда два раза -1, и среднее будет 1 -- то это, по-твоему, сохранение смысла?

Всё в порядке при нуле.
Изображение

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 22.05.2007 (Вт) 10:56

tyomitch
Повторю, я не помню определения. Сам бы определил для отрицательных, как "минус корень из модуля произведения членов".
Так получается именно ГЕОМЕТРИЧЕСКИЙ смысл.
А ноль имеет тот же смысл, что минус бесконечность при вычислении среднего арифметического, хотя формула не нарушается.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 22.05.2007 (Вт) 11:05

Повторю, я не помню определения.
Корень степени х из произведения х членов?
Лучший способ понять что-то самому — объяснить это другому.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 22.05.2007 (Вт) 14:34

Среднее геометрическое с геометрической точки зрения :) действительно имеет смысл только для строго положительных чисел. Хотя в формулу можно подставить и 0, конечно.
Быть... или не быть. Вот. В чём вопрос?

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 22.05.2007 (Вт) 14:36

uhm, и при нуле тоже имеет смысл с геометрической точки зрения :)

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 22.05.2007 (Вт) 14:47

Не знаю, не уверен. Что касается геометрического смысла - я понял, что не знаю, точно ли я его понимаю. Я встречал объяснения геометрического смысла различных средних на трапеции, в этом случае среднее геометрическое чисел a и b равно длине отрезка, параллельного основаниям трапеции и делящего трапецию с основаниями a и b на подобные трапеции. Очевидно, что в случае, если одно из оснований равно 0, такой отрезок не существует.

Anyway, в определении средних степени n, которые я встречал, всегда говорится о строго положительных числах, видимо потому, что эти определения валидны при любом n только для положительных чисел. Можно ли расширять эти определения для конкретных n - судить не мне :)
Быть... или не быть. Вот. В чём вопрос?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 22.05.2007 (Вт) 16:11

Antonariy
Можно так определить:
Б является средним геометрическим для А и В, если Б относится к А, как В относится к Б.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 23.05.2007 (Ср) 7:41

Эх!
А решение то неожиданное и видно всем, кроме написавших: Step - это оператор конструкции for ... next Автор, измените название переменной Step! :twisted:
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 23.05.2007 (Ср) 8:12

VB_D3D_Денис писал(а):Эх!
А решение то неожиданное и видно всем, кроме написавших: Step - это оператор конструкции for ... next Автор, измените название переменной Step! :twisted:

Step - допустимое имя переменной.
Равно как конструкция for step=1 to step step step.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing-бот, Google-бот и гости: 80

    TopList