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


Автор: fox20 10.12.2010, 12:42
помогите добрые люди перевести уравнение в код VB6, просто я как бы новичек, а нам на заочке дали вот такое вот задание 
user posted image

Автор: Akina 10.12.2010, 12:52
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена!

Добавлено через 4 минуты и 32 секунды
Код

if x>1 and x<8 then
  y=(2*x+5*k)/(13*(3*x+1))
elseif k>=1 and x>=8 then
  ...
elseif x<=1 then
  if k>=2 and k<=10 then
    ...
  elseif k>10
    ...
  else
    ...
  end if
else
  ...
end if

Многоточия разворачивай самостоятельно.

PS. А нахрен идти учиться, если не собираешься учиться?

Автор: fox20 10.12.2010, 13:07
Добрые люди посмотрите правильный ли код для второго уравнения , то есть где К>=1 x>=8
Код

Private Sub Command1_Click()
Dim i As Integer, K As Integer
Dim x As Single, y As Single
Dim a As Single
x = Val(xs.Text)
K = Int(Val(ks.Text))
a = 1
y = 0
if k>=1 and x>=8 then
For i = 1 To K
 a = (9 ^ i / i) * x ^ (2 * i) * Sin(K * x + PI * i)
 y = y + a
Next i
ys.Text = Str(y)
End If
End Sub

Автор: darkart 10.12.2010, 13:37
Код

    Dim x, k, i As Integer
    Dim y As Double
    
    Dim pi As Double
    pi = 4 * Math.Atn(1) 'число Пи
    
    'ввод значений
    x = CInt(InputBox("Ведите X:"))
    k = CInt(InputBox("ВВедите K:"))
    
    'проверка условий
    If x <= 1 Then
        If k > 10 Then
            y = (2 * x + 3) * Exp(-2 * k * (x + 1))
        ElseIf k >= 2 Then
            y = 6 * k - 8 * x ^ 3
        Else
            y = 12
        End If
    ElseIf x < 8 Then
        y = (2 * x + 5 * k) / (13 * (3 * x + 1))
    Else
        If k >= 1 Then
            y = 0
            For i = 1 To k
                y = y + ((9 ^ i) / i) * (x ^ (2 * i)) * Sin(k * x + pi * i)
            Next i
        Else
            y = Abs(x ^ 2 + 4 * k) / (x ^ 2)
        End If
    End If

Автор: fox20 10.12.2010, 15:33
добрые люди проверти пожалуйста код 
Код

Private Sub Command1_Click()
Dim x As Single, y As Single, k As Integer, i As Integer
Dim pi As Double
pi = 4 * Math.Atn(1) 'число Пи
x = Val(xs.Text)
k = Int(Val(ks.Text))
'первое уравнение
If (x > 1) And (x < 8) Then
y = (2 * x + 5 * x) / 13 * (3 * x + 1)
Else
'второе уравнение
If (k >= 1) And (x >= 8) Then
y = 0
For i = 1 To k
y = y + ((9 ^ i) / i) * (x ^ (2 * i)) * Sin(k * x + pi * i)
Next
Else
'третье уравнение
If (x <= 1) Then
Select Case k
Case Is >= 2, Is <= 10
y = 6 * k - 8 * x ^ 3
Case Is > 10
y = (2 * x + 3) * Exp(-2 * k * (x + 1))
Case Else
y = 12
End Select
'четвертое уравнение
Else
y = (Abs(x ^ 2 + 4 * k)) / (x ^ 2)
End If
End If
End If
ys.Text = Str(y)
End Sub



Автор: darkart 10.12.2010, 16:36
Не то.
Выделяейте логические блоки отступами... Так легче разбираться в коде.
Ваш код:
Код

Private Sub Command1_Click()
    Dim x As Single, y As Single, k As Integer, i As Integer
    Dim pi As Double
    pi = 4 * Math.Atn(1)
    x = Val(xs.Text)
    k = Int(Val(ks.Text))
    If (x > 1) And (x < 8) Then
        y = (2 * x + 5 * x) / 13 * (3 * x + 1)
    Else
        If (k >= 1) And (x >= 8) Then
            y = 0
            For i = 1 To k
                y = y + ((9 ^ i) / i) * (x ^ (2 * i)) * Sin(k * x + pi * i)
            Next
        Else
            If (x <= 1) Then
                Select Case k
                Case Is >= 2, Is <= 10 'k>=2 or k<=10 - ЗДЕСЬ подходит любое k
                    y = 6 * k - 8 * x ^ 3 'это строка выполняется для любого k, до остальных управление не доходит
                Case Is > 10
                    y = (2 * x + 3) * Exp(-2 * k * (x + 1))
                Case Else
                    y = 12
                End Select
            Else
                y = (Abs(x ^ 2 + 4 * k)) / (x ^ 2)
            End If
        End If
    End If
    ys.Text = Str(y)
End Sub

Автор: fox20 10.12.2010, 18:11
вот еще вариант ) как лучше
Код

Private Sub Command1_Click()
Dim x As Single, y As Single, k As Integer, i As Integer
Dim pi As Double
pi = 4 * Math.Atn(1) 'число Пи
x = Val(xs.Text)
k = Int(Val(ks.Text))
select case x
case x>1 and x<8
y = (2 * x + 5 *k)  / 13 * (3 * x + 1)
case k >= 1 And x >= 8
y = 0
For i = 1 To k
y = y + ((9 ^ i) / i) * (x ^ (2 * i)) * Sin(k * x + pi * i)
Next
case x <= 1 
Select Case k
Case k >= 2 Or k <= 10
y = 6 * k - 8 * x ^ 3
Case k > 10
y = (2 * x + 3) * Exp(-2 * k * (x + 1))
Case Else
y = 12
End Select
case else
y = (Abs(x ^ 2 + 4 * k)) / (x ^ 2)
end select
ys.Text = Str(y)
End Sub


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