Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > задачи на VB 6.0


Автор: Vlove 6.12.2007, 08:55
всем привет. помогите, пжлст, решить две задачки в VB 6.0. для тех кто это умеет, будет легко...

1). Используя условные операторы для организации цикла, выполнить табулирование функции f(x) на интервале (A;B)  с шагом H для m точек. Значения  x и f(x) вывести в виде таблицы.

                 x*ctgx, when x<0
f(x) =     cosx+sinx, when x>=0 

при A = - (минус) P (пи)/2
      B = p (пи)
      H - ?
      m =  7

ответы при проверке должны получится такие: 
X              f(x)
-1.571      0
-0.785      0.785
0             1
0.785       1.414
1.571       1
2.356       0
3.146      -1

Добавлено через 1 минуту и 36 секунд
2) Используя операторы цикла FOR...NEXT или WHILE...WEND, вычислить значение выражения:

((1^2+1+1^3)/(1+1^4+1^6))+((2^2+2+2^3)/(2+2^4+2^6))+…+((10^2+10+10^3)/(10+10^4+10^6))        

ответ должен получиться: 1,261039

заранее спасибо...жду  

Автор: Rodman 6.12.2007, 10:17

M
Rodman
Модератор: Название темы должно отражать ее суть!

Автор: kapbepucm 6.12.2007, 11:21
Код
Public Sub Zadanije2()
'((1^2+1+1^3)/(1+1^4+1^6))+((2^2+2+2^3)/(2+2^4+2^6))+…+((10^2+10+10^3)/(10+10^4+10^6))
  Dim I As Long
  Dim Otvet As Single
  Otvet = 0
  For I = 1 To 10
    Otvet = Otvet + ((I ^ 2 + I + I ^ 3) / (I + I ^ 4 + I ^ 6))
  Next I
  MsgBox CStr(Otvet)
End Sub
Цитата(Vlove @  6.12.2007,  08:55 Найти цитируемый пост)
H - ?
Где ознакомиться с алгоритмом расчёта шага? Первое задание тоже бы решил...

Автор: Vlove 6.12.2007, 15:50
Цитата(kapbepucm @ 6.12.2007,  11:21)
Код
Public Sub Zadanije2()
'((1^2+1+1^3)/(1+1^4+1^6))+((2^2+2+2^3)/(2+2^4+2^6))+…+((10^2+10+10^3)/(10+10^4+10^6))
  Dim I As Long
  Dim Otvet As Single
  Otvet = 0
  For I = 1 To 10
    Otvet = Otvet + ((I ^ 2 + I + I ^ 3) / (I + I ^ 4 + I ^ 6))
  Next I
  MsgBox CStr(Otvet)
End Sub
Цитата(Vlove @  6.12.2007,  08:55 Найти цитируемый пост)
H - ?
Где ознакомиться с алгоритмом расчёта шага? Первое задание тоже бы решил...

за вторую задачу огромное спасибо...а в первой, возьми любой шаг, только напишешь какой взял...

Автор: Aloha 6.12.2007, 16:34
Цитата
Где ознакомиться с алгоритмом расчёта шага?


Алгоритм простой:

-1,571     -pi/2
-0,785     -pi/4
     0         0
 0,785      pi/4
 1,571      pi/2
 2,356    3*pi/4
 3,142        pi


Только для pi значение в задании приведено с ошибкой в третьем знаке smile
В общем, как мне кажется, шаг нужно взять равным pi/4 в интервале [-pi/2; pi]

Код
Option Explicit

Private Const pi = 3.141592

Private Sub Test()
  Dim n As Long, x As Double
  For n = -2 To 4
    x = n * pi / 4
    Debug.Print Round(x, 3); Tab; Round(f(x), 3)
  Next n
End Sub

Private Function f(ByRef x As Double) As Double
  If x < 0 Then f = x * Cos(x) / Sin(x)
  If x >= 0 Then f = Cos(x) + Sin(x)
End Function





Автор: kapbepucm 6.12.2007, 17:00
Код
Public Sub Zadanije1()
  Const Pi = 3.14159265358979
  Dim H As Double, A As Double, B As Double, m As Long
  A = -Pi / 2: B = Pi: m = 7
  H = (B - A) / (m - 1)'шаг здесь вычисляется
  Dim Otvet() As Double
  ReDim Otvet(1 To m, 1 To 2) As Double
  Otvet(1, 1) = A
  Dim I As Long
  For I = 1 To m
    If Otvet(I, 1) < 0 Then
      Otvet(I, 2) = Otvet(I, 1) * Cos(Otvet(I, 1)) / Sin(Otvet(I, 1))
    Else
      Otvet(I, 2) = Cos(Otvet(I, 1)) + Sin(Otvet(I, 1))
    End If
    If I < m Then Otvet(I + 1, 1) = Otvet(I, 1) + H
  Next I
  For I = 1 To m
    MsgBox "x=" & CStr(Round(Otvet(I, 1), 3)) & Chr(13) & Chr(10) & "f(x)=" & CStr(Round(Otvet(I, 2), 3))
  Next I
End Sub
Перед тем, как ставить пост невидел, что ответ на первое задание уже имеется от Aloha.
Хотя я считаю свой подход к решению несколько иным (для других интервалов применимым).

Автор: Vlove 6.12.2007, 17:45
спасибо вам большое...родина вас не забудетsmile мое уважение...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)