15:47

shit, oof
Здравствуйте.
Проблема вот в чем: надо создать функцию пользователя для таблицы умножения на 7.
Пишу:
Function V(k As Single, x As Single) As Single
k = 7
For x = 1 To 10 Step 1
V = k * x
Next x
End Function

Но почему-то, когда вызываю эту функцию, надо заново вводить значения к и х, и все равно получается неверный ответ (к=7, х=1, допустим, а ответ не 7, а 70).
Где ошибка-то? Глюк какой-то?

Комментарии
06.06.2011 в 15:52

Аккаунт для использования в публичных местах. Основной ник - Trotil.
По коду после цикла будет сохранено последнее значение, т.е. v=7*10=70
06.06.2011 в 15:57

shit, oof
Trotill а как сделать, чтобы выводилось таблицей и все значения?
06.06.2011 в 16:00

Танкист Апокалипсиса
После V = k * x добавить строку
print k, x, V
06.06.2011 в 16:02

Танкист Апокалипсиса
А вообще определение k в теле функции как k = 7 делает ненужным и бессмысленным в функции V параметр k. То же относится и к x.
06.06.2011 в 16:08

shit, oof
DukeSS не получается. пытаюсь сохранить, выдает такое:

06.06.2011 в 16:09

shit, oof
DukeSS А вообще определение k в теле функции как k = 7 делает ненужным и бессмысленным в функции V параметр k. То же относится и к x. а как надо-то тогда, чтобы была именно функция таблицы умножения на 7?
06.06.2011 в 16:17

Танкист Апокалипсиса
а как надо-то тогда, чтобы была именно функция таблицы умножения на 7?
Если ставить вопрос именно так, то представленный вариант сгодится. Но, по-хорошему, k и x должны задаваться _вне_ функции.
пытаюсь сохранить, выдает такое:
Каков оператор/функция вывода на экран в VB, я не знаю.
06.06.2011 в 16:27

shit, oof
DukeSS вроде так:
Range("a1") = "k": Range("a2") = Str(k)
Range("b1") = "x": Range("b2") = Str(x)
Range("c1") = "V": Range("c2") = Str(V)
но все равно не выходит.
06.06.2011 в 21:45

Sanctus Satanas
А это кто вообще? Просто VB? VBA в каком-нибудь ворде/экселе?
07.06.2011 в 01:50

shit, oof
--==SS==-- VBA в Excel.
07.06.2011 в 08:19

какая красота
07.06.2011 в 08:30

shit, oof
ehlo_kitty в смысле?
07.06.2011 в 08:36

во всех смыслах сразу например
07.06.2011 в 09:09

shit, oof
ehlo_kitty я вас побаиваться начала после этого заявления. В любом случае, есть что сказать по существу?
07.06.2011 в 09:43

ну давайте начнём вот с чего. вы при объявлении функции указали что она принимает два сингла и возвращается один. при этом ни один из принятых параметров она не использует, а вернуть должна либо эээ "таблицу умножения" либо ничего.

вы можете хотябы намекнуть чем вы руководствовались при написании этого кода?
07.06.2011 в 13:49

shit, oof
ehlo_kitty уж точно не здравым смыслом, если допустила такие грубые ошибки. Ну, наверное, грубые - в этом я положусь на вас, кажется, вы в этом разбираетесь.
Так, я попробую разобраться. она принимает два сингла это k и x, верно?
возвращается один V?
при этом ни один из принятых параметров она не использует, как это не использует? В формуле ведь записано V = k * x, то есть она использует и k, и x.
Или вы имеете в виду что-то другое?
07.06.2011 в 13:57

Танкист Апокалипсиса
ehlo_kitty пишет про то, что результатом функции V будет число. Одно. А, по хорошему, надо, чтобы V было массивом, чтобы в него можно было загнать результаты вычислений.
07.06.2011 в 14:22

у го есть трек "в стену головой"; очень точно передаёт настроение момента.

бросайте вы это дело, мой вам совет.
07.06.2011 в 16:45

Sanctus Satanas
Нокорро
Он имеет в виду, что ваша функция принимает два аргумента — k и x. Ни один из этих аргументов в функции не используется. Потому что их значения вы тут же перезаписываете другими данными.
В k вы помещаете 7.
В x — 1 и в цикле увеличиваете до 10.
Таким образом, переданные в функцию данные не используются вообще никак.
Это то же самое, как если бы сразу написали Function V() As Single. Ничего не изменится. Правда.
Ну а V совершенно очевидным образом это одна переменная с одним значением. Более того, функция и объявлена, как возращающая значение типа Single. Одно значение.

Теперь по поводу экселя. Как это в конечном счёте должно выглядеть? Она должна в таблице заполнить поля гм... таблицей умножения?
07.06.2011 в 17:09

shit, oof
теперь по поводу экселя. Как это в конечном счёте должно выглядеть? Она должна в таблице заполнить поля гм... таблицей умножения?
да, по идее.
Я так поняла, это должно быть три столбика. В первом 7, во втором - множители, от 1 до 10, в третьем результат.
Так, значит в k и x не надо писать никаких значений, да? Тогда как дать понять, что это именно таблица умножения на семь?
07.06.2011 в 17:19

Sanctus Satanas
В смысле как понять? Нужно, чтобы эта функция всегда при любом раскладе рисовала таблицу умножения на 7? Ну тогда в ней не нужны аргументы — зачем туда что-то передавать, если оно не будет использоваться? )
07.06.2011 в 17:32

shit, oof
--==SS==-- если ей не нужны переменные, не нужны аргументы, как тогда функцию-то создать?
07.06.2011 в 17:50

Sanctus Satanas
Ну типа:

Sub V
For I = 1 To 10
' как-нибудь там записать в ячейку I * 7
Next I
End Sub


Х.з., как в экселе что-то куда-то писать. ) Потом как-нибудь погуглю. )
А совсем без переменных — заменить цикл на последовательный вызов операций записи. X)