Как задать условие так, чтобы работа процедуры была непрерывной? - VB

Узнай цену своей работы

Формулировка задачи:

Пишу программу на VB6.Это программа для расчёта коэффициентов.Изначально пользователь задаёт начальные значения n и k.Затем по формулам рассчитывается n1 и k1.Полученные значения нужно сохранить и записать вместо n и k начальных,заданных пользователем.И такие действия осуществляются пока не будет выполнено условие. Не могу догнать,как задать условие так,чтобы работа процедуры была непрерывной,чтобы по рассчитанным по формулам значениям производились расчёты заново.Объяснил немного сумбурно,но надеюсь кто-нибудь поймет о чем я.Ниже приведу пример,но скорее всего думаю,что написан он не правильно.За любую помощь буду благодарен.

Решение задачи: «Как задать условие так, чтобы работа процедуры была непрерывной?»

textual
Листинг программы
Private Sub Command2_Click()
Dim n1 As Double, n2 As Double, n3 As Double, k2 As Double, k3 As Double, Tmax As Double, Tmin As Double, T As Double
Dim s1 As Double, s2 As Double, s3 As Double, s4 As Double, s5 As Double, s6 As Double, s7 As Double, s8 As Double, s9 As Double, s10 As Double, s11 As Double, s12 As Double, s13 As Double, s14 As Double, s15 As Double, s16 As Double, s17 As Double, s18 As Double, s19 As Double, s20 As Double, s21 As Double, s22 As Double, s23 As Double, m1 As Double, m2 As Double, m3 As Double, m4 As Double, m5 As Double, m6 As Double, m7 As Double, m8 As Double, m9 As Double
Dim Add1 As Double, Add2 As Double, Add3 As Double, Add4 As Double, Add5 As Double
Dim A As Double, B As Double, C As Double, d As Double, E As Double, F As Double, r As Double, p As Double, Re1 As Double, Re2 As Double, Re3 As Double, Re4 As Double, Im1 As Double, Im2 As Double, Im3 As Double, Im4 As Double
'Зададим начальные значения
n1 = Val(Text1.Text)
n2 = Val(Text2.Text)
n3 = Val(Text3.Text)
k2 = Val(Text4.Text)
k3 = Val(Text5.Text)
Tmax = Val(Text6.Text)
Tmin = Val(Text7.Text)
While (n2<>3)'пока n2 не равно трем
'производим расчёты n2
T = Tmax / Tmin
s1 = Format(n1 ^ 2 * n2 ^ 2, "#,##0.00")
s2 = Format(2 * n2 * n1 ^ 2 * n3, "#,##0.00")
s3 = Format(2 * n3 ^ 2 * n1 ^ 2, "#,##0.00")
s4 = Format(2 * n1 ^ 2, "#,##0.00")
s5 = Format(4 * k3 * n1 ^ 2, "#,##0.00")
s6 = Format(2 * k3 ^ 2 * n1 ^ 2, "#,##0.00")
s7 = Format(2 * n2 ^ 4, "#,##0.00")
s8 = Format(2 * n2 ^ 3 * n3, "#,##0.00")
s9 = Format(2 * n3 ^ 2 * n2 ^ 2, "#,##0.00")
s10 = Format(4 * n2 ^ 2, "#,##0.00")
s11 = Format(4 * k3 * n2 ^ 2, "#,##0.00")
s12 = Format(2 * k3 ^ 2 * n2 ^ 2, "#,##0.00")
s13 = Format(2 * n2 * n3, "#,##0.00")
s14 = Format(2 * n3 ^ 2, "#,##0.00")
s15 = 2
s16 = Format(4 * k3, "#,##0.00")
s17 = Format(2 * k3 ^ 2, "#,##0.00")
s18 = Format(2 * n1 * n2 ^ 3, "#,##0.00")
s19 = Format(8 * n1 * n2 ^ 2 * n3, "#,##0.00")
s20 = Format(2 * n1 * n2 * n3 ^ 2, "#,##0.00")
s21 = Format(2 * n1 * n2, "#,##0.00")
s22 = Format(4 * n1 * n2 * k3, "#,##0.00")
s23 = Format(2 * n1 * n2 * k3 ^ 2, "#,##0.00")
m1 = Format(T * n2 * n3 * n1 ^ 2, "#,##0.00")
m2 = Format(T * 2 * k3 * n1 ^ 2, "#,##0.00")
m3 = Format(T * 2 * n2 ^ 3 * n3, "#,##0.00")
m4 = Format(T * 2 * n2 * n3, "#,##0.00")
m5 = Format(T * 2 * n1 * n2 ^ 3, "#,##0.00")
m6 = Format(T * 4 * n1 * n2 * n3 ^ 2, "#,##0.00")
m7 = Format(T * 2 * n1 * n2, "#,##0.00")
m8 = Format(T * 4 * n1 * n2 * k3, "#,##0.00")
m9 = Format(T * 2 * n1 * n2 * k3 ^ 2, "#,##0.00")
Add1 = s15
Add2 = (-s16)
Add3 = (s4 + s10 - s13 + s14 + s17 - s21 - m4 - m7 + m8)
Add4 = (-s5 - s11 + s22 - m2)
Add5 = (s1 - s2 + s3 + s6 + s7 - s8 + s9 + s12 - s18 + s19 - s20 - s23 - m1 - m3 - m5 - m6 - m9)
Text10.Text = Add1 & "(n2^4)+" & Add2 & "(n2^3)+" & Add3 & "(n2^2)+" & Add4 & "(n2)+" & Add5
A1 = Add1
B1 = Add2
C1 = Add3
d1 = Add4
E1 = Add5
F1 = 0
p1 = (8 * A1 * C1 - 3 * B1 ^ 2) / (8 * A1 ^ 2)
r1 = (16 * A1 * B1 ^ 2 * C1 - 64 * A1 ^ 2 * B1 * d1 - 3 * B1 ^ 4 + 256 * A1 ^ 3 * E) / (256 * A1 ^ 4)
 If ((p1 ^ 2 - 4 * r1) > 0) Or ((p1 ^ 2 - 4 * r1) = 0) Then
  If ((-p1 + Sqr(p1 ^ 2 - 4 * r1)) >= 0) Then
  Re11 = Sqr((-p1 + Sqr(p1 ^ 2 - 4 * r1)) / 2) - B1 / (4 * A1)
  Im11 = 0
  Re21 = -Sqr((-p1 + Sqr(p1 ^ 2 - 4 * r1)) / 2) - B1 / (4 * A1)
  Im21 = 0
          Else
            Re11 = -B1 / (4 * A1)
            Im11 = Sqr((p1 - Sqr(p1 ^ 2 - 4 * r1)) / 2)
            Re21 = -B1 / (4 * A1)
            Im21 = -Sqr((p1 - Sqr(p1 ^ 2 - 4 * r1)) / 2)
            End If
            End If
   If ((-p1 - Sqr(Abs(p1 ^ 2 - 4 * r1))) >= 0) Then
              Re31 = Sqr((-p1 - Sqr(p1 ^ 2 - 4 * r1)) / 2) - B1 / (4 * A1)
              Im31 = 0
              Re41 = -Sqr((-p1 - Sqr(p1 ^ 2 - 4 * r1)) / 2) - B1 / (4 * A1)
              Im41 = 0
              Else
              Re31 = -B1 / (4 * A1)
              Im31 = Sqr((p1 + Sqr(Abs(p1 ^ 2 - 4 * r1))) / 2)
              Re41 = -B1 / (4 * A1)
              Im41 = -Sqr((p1 + Sqr(Abs(p1 ^ 2 - 4 * r1))) / 2)
              End If
           
        If p1 * p1 - 4 * r1 < 0 Then
        If p1 < 0 Then F1 = Atn(-Sqr(Abs(4 * r1 - p1 ^ 2)) / p1)
        End If
        If p1 > 0 Then F1 = Atn(-Sqr(Abs(4 * r1 - p1 ^ 2) / p1)) + 3.14159265388979
        If p1 = 0 Then F1 = 3.14159265388979 / 2
        Re11 = Sqr(Sqr(Abs(r1))) * Cos(F1 / 2) - B1 / (4 * A1)
        Im11 = Sqr(Sqr(Abs(r1))) * Sin(F1 / 2)
        Re21 = Sqr(Sqr(Abs(r1))) * Cos(F1 / 2) - B1 / (4 * A1)
        Im21 = -Sqr(Sqr(Abs(r1))) * Sin(F1 / 2)
        Re31 = -Sqr(Sqr(Abs(r1))) * Cos(F1 / 2) - B1 / (4 * A1)
        Im31 = Sqr(Sqr(Abs(r1))) * Sin(F1 / 2)
        Re41 = -Sqr(Sqr(Abs(r1))) * Cos(F1 / 2) - B1 / (4 * A1)
        Im41 = -Sqr(Sqr(Abs(r1))) * Sin(F1 / 2)
'Закончили расчёты и проверяем какое из четырех значений будет равно n2
'обновим значение n2 и заново будем производить с ним расчёты
If (1 < Re11 < 3) Then
k2 = Re11
End If
If (1 < Re21 < 3) Then
k2 = Re21
End If
If (1 < Re31 < 3) Then
k2 = Re31
End If
If (1 < Re41 < 3) Then
k2 = Re41
End If
End If
End Sub

ИИ поможет Вам:


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

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы