Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 |

 

  Вопрос: Дано действительное число х. Вычислить Добавлено: 04.03.09 19:27  

Автор вопроса:  Incognito
S = sinx + sinsinx + . . . + sinsin...sinx
фигурная тут скобка снизу (. . . + sinsin...sinx)
n раз под фигурной скобкой

Ответить

  Ответы Всего ответов: 18  

Номер ответа: 1
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #1 Добавлено: 04.03.09 19:39
  1. Function GetSinExt(X As Double, N As Long) As Double
  2. Dim S As Double, SE As Double, SinX As Double, I As Long
  3. SinX = Sin(X)
  4. SE = SinX
  5. For I = 1 To N
  6.   S = S + SE
  7.   SE = SE * SinX
  8. Next I
  9. GetSinExt = S
  10. End Function

Ответить

Номер ответа: 2
Автор ответа:
 Incognito



Вопросов: 5
Ответов: 25
 Профиль | | #2 Добавлено: 04.03.09 19:55
2 очень тупых вопроса:
1. Это точно работает всё и оно к этйо задаче (просто это всё не моё и я в этих программах очень плохо, туго разбираюсь)
2. Что надо прописать в ячейку в екселе, чтобы было видно результат ? Пробывал =GetSinExt()и =GetSinExt

Ответить

Номер ответа: 3
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #3 Добавлено: 04.03.09 20:18
В первую ячейку листа записываешь X (в градусах!)
Во вторую ячейку листа (по горизонтали!) записываешь N (целое положительное число!)
Alt+F8 - ищешь макрос SinExt и запускаешь его!
В третьей ячейке листа (по горизонтали!) смотришь результат!
  1. Sub SinExt()
  2. Dim S As Double, SE As Double, SinX As Double, I As Long
  3. SinX = Sin(Cells(1) * 3.14159265358979 / 180)
  4. SE = SinX
  5. For I = 1 To Cells(2)
  6.   S = S + SE
  7.   SE = SE * SinX
  8. Next I
  9. Cells(3) = S
  10. End Sub

Ответить

Номер ответа: 4
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #4
Добавлено: 04.03.09 20:22
7-ю строку, наверно, надо заменить на SE = Sin(SE)

Ответить

Номер ответа: 5
Автор ответа:
 Incognito



Вопросов: 5
Ответов: 25
 Профиль | | #5 Добавлено: 04.03.09 20:24
Ошибка - 3. SinX = Sin(Cells(1) * 3.14159265358979 / 180) "Type mismatch"
Хм...так ведь у меня нету никаких ПИ ? зачем оно надо?

Ответить

Номер ответа: 6
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #6 Добавлено: 04.03.09 20:41
7-ю строку, наверно, надо заменить на SE = Sin(SE)
, возможно, если в задаче имеется ввиду синус от синуса, а не синус в степени I.
Аффтар, если первый вариант - делай как SHARP велит!
А если углы в радианах - удали * 3.14159265358979 / 180

Ответить

Номер ответа: 7
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #7 Добавлено: 04.03.09 21:06
Incognito пишет:
Ошибка - 3. SinX = Sin(Cells(1) * 3.14159265358979 / 180) "Type mismatch"
Хм...так ведь у меня нету никаких ПИ ? зачем оно надо?

Если ты в Cells(1) записал X(букву), в Cells(2) - N(букву) и ожидаешь, что в третей ячейке вдруг вырастет 3D-график, то пойду-ка я лучше спать (здоровее буду).

Ответить

Номер ответа: 8
Автор ответа:
 Incognito



Вопросов: 5
Ответов: 25
 Профиль | | #8 Добавлено: 04.03.09 22:59
я ожидаю, что там выдаст результат, а его нету...
у тебя эта функция работает ? Объясни мне, а то я что-то не могу разобраться и понять...

Ответить

Номер ответа: 9
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #9 Добавлено: 05.03.09 07:13
Incognito, попытайся ответить на следующие ответы, а там посмотрим, можно ли тебе чем то помочь.
1. Эта "функция" должна использоваться в формуле ячейки или как отдельный макрос?
2. Приведи свой окончательный вариант кода.
3. В окне VBA нажми Ctrl+G и набери
?Cells(1) Enter'последнее слово не набирай, попробуй найти такую кнопку! и сообщи мне результат - то, что выросло в следующей строке.
То же самое для
?Cells(2) Enter

Ответить

Номер ответа: 10
Автор ответа:
 Incognito



Вопросов: 5
Ответов: 25
 Профиль | | #10 Добавлено: 07.03.09 15:40
1. Ммм...мне кажется эта функция должна давать результат какой-то :)
2. И надо, чтобы в этой функции использовалась обязательно Do Until ...

помогите пожалуйста

Ответить

Номер ответа: 11
Автор ответа:
 Incognito



Вопросов: 5
Ответов: 25
 Профиль | | #11 Добавлено: 09.03.09 12:30
Sub SinExt()
Dim S,se As Double, x as double, m,k,n as integer
x=0.5
n=10
se=0
For I = 1 To n
 k=i
 s=x
 for m=1 to k
  s=sin(s)
 next k
 se=se+s
Next I
msgbox cstr('Эта чепуха = ' & se)
End Sub

Ошибка:
Invalid Next control variable reference...

и мне надо, чтобы в этой функции использовалось Do Until

помогите пожалуйста ... а то не разбираюсь я во всём этом...( а мозги не работают для этого...

Ответить

Номер ответа: 12
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #12 Добавлено: 09.03.09 17:38
Снова до ладом! Очень нужен нам Do Until (м.б. Do ... Loop Until (While))! Буду считать что понял твой тезис и мы имеем на входе строку S = Sin(0.5) + Sin(Sin(0.5)) + ... + Sin(Sin...(Sin(0.5)...), не зная заранее N - к-во слагаемых и X - угол в радианах! Do Until и в этом случае нужен как собаке пятая нога, но если тебе так это важно, получай -
  1. Function GetSinExt(Rn As Range) As Double
  2. Dim S As String, PS As Long, GSE As Double, X As Double, SinX As Double
  3. S = Rn
  4. X = Val(Mid(S, InStr(1, S, "(") + 1))
  5. SinX = X
  6. Do
  7.   SinX = Sin(SinX)
  8.   GSE = GSE + SinX
  9.   PS = InStr(PS + 1, S, "+")
  10. Loop Until PS = 0
  11. GetSinExt = GSE
  12. End Function
  13.  
  14. Sub GetSinExt_Example()
  15.   Debug.Print GetSinExt(ActiveCell)
  16. End Sub

Проверял - работает и как функция для ячейки, если в качестве аргумента использовать ячейку с соответствующим содержимым - Sin(0.5)+Sin(Sin(0.5))+Sin(Sin(Sin(0.5))) (разделитель - .(точка!))

Ответить

Номер ответа: 13
Автор ответа:
 Incognito



Вопросов: 5
Ответов: 25
 Профиль | | #13 Добавлено: 11.03.09 18:34
Sub GetSinExt_Example()
  ;Debug.Print GetSinExt(ActiveCell)

это мы не проходили и мне скажут, что это не дело...
просто наверно мне надо, чтобы в любую ячейку приходил результат... если он должен быть здесь!

Ответить

Номер ответа: 14
Автор ответа:
 Incognito



Вопросов: 5
Ответов: 25
 Профиль | | #14 Добавлено: 11.03.09 19:24
Проверял - работает и как функция для ячейки, если в качестве аргумента использовать ячейку с соответствующим содержимым - Sin(0.5)+Sin(Sin(0.5))+Sin(Sin(Sin(0.5))) (разделитель - .(точка!))

не понимаю, я вожу вот это в ячейку Sin(0.5)+Sin(Sin(0.5))+Sin(Sin(Sin(0.5))) и что дальше 0-о должен быть результат или как? или я что-то не дописал...

п.с. я схожу с ума...ничего не понимаю!!!!!!!!!!!!!!!

Ответить

Номер ответа: 15
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #15 Добавлено: 11.03.09 19:58
это мы не проходили
еще бы узнать, что же вы проходили, а главное, как добиваетесь таких результатов!
В ячейку A1 заносишь: Sin(0.5)+Sin(Sin(0.5))+Sin(Sin(Sin(0.5)))
В ячейку B1 заносишь: =GetSinExt(RC[-1])

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам