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

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

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

Пишу программу на VB6.Это программа для расчёта коэффициентов.Изначально пользователь задаёт начальные значения n и k.Затем по формулам рассчитывается n1 и k1.Полученные значения нужно сохранить и записать вместо n и k начальных,заданных пользователем.И такие действия осуществляются пока не будет выполнено условие. Не могу догнать,как задать условие так,чтобы работа процедуры была непрерывной,чтобы по рассчитанным по формулам значениям производились расчёты заново.Объяснил немного сумбурно,но надеюсь кто-нибудь поймет о чем я.Ниже приведу пример,но скорее всего думаю,что написан он не правильно.За любую помощь буду благодарен.
Листинг программы
  1. Public Sub Test(X As Integer,Y As Integer)
  2. X = Val(Text1.Text)
  3. Y = Val(Text2.Text)
  4. While X < Y
  5. X1 = X + 1
  6. Y1 = Y + 1
  7. X = X1
  8. Y = Y1
  9. Wend
  10. End Sub

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

textual
Листинг программы
  1. Private Sub Command2_Click()
  2. 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
  3. 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
  4. Dim Add1 As Double, Add2 As Double, Add3 As Double, Add4 As Double, Add5 As Double
  5. 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
  6. 'Зададим начальные значения
  7. n1 = Val(Text1.Text)
  8. n2 = Val(Text2.Text)
  9. n3 = Val(Text3.Text)
  10. k2 = Val(Text4.Text)
  11. k3 = Val(Text5.Text)
  12. Tmax = Val(Text6.Text)
  13. Tmin = Val(Text7.Text)
  14. While (n2<>3)'пока n2 не равно трем
  15. 'производим расчёты n2
  16. T = Tmax / Tmin
  17. s1 = Format(n1 ^ 2 * n2 ^ 2, "#,##0.00")
  18. s2 = Format(2 * n2 * n1 ^ 2 * n3, "#,##0.00")
  19. s3 = Format(2 * n3 ^ 2 * n1 ^ 2, "#,##0.00")
  20. s4 = Format(2 * n1 ^ 2, "#,##0.00")
  21. s5 = Format(4 * k3 * n1 ^ 2, "#,##0.00")
  22. s6 = Format(2 * k3 ^ 2 * n1 ^ 2, "#,##0.00")
  23. s7 = Format(2 * n2 ^ 4, "#,##0.00")
  24. s8 = Format(2 * n2 ^ 3 * n3, "#,##0.00")
  25. s9 = Format(2 * n3 ^ 2 * n2 ^ 2, "#,##0.00")
  26. s10 = Format(4 * n2 ^ 2, "#,##0.00")
  27. s11 = Format(4 * k3 * n2 ^ 2, "#,##0.00")
  28. s12 = Format(2 * k3 ^ 2 * n2 ^ 2, "#,##0.00")
  29. s13 = Format(2 * n2 * n3, "#,##0.00")
  30. s14 = Format(2 * n3 ^ 2, "#,##0.00")
  31. s15 = 2
  32. s16 = Format(4 * k3, "#,##0.00")
  33. s17 = Format(2 * k3 ^ 2, "#,##0.00")
  34. s18 = Format(2 * n1 * n2 ^ 3, "#,##0.00")
  35. s19 = Format(8 * n1 * n2 ^ 2 * n3, "#,##0.00")
  36. s20 = Format(2 * n1 * n2 * n3 ^ 2, "#,##0.00")
  37. s21 = Format(2 * n1 * n2, "#,##0.00")
  38. s22 = Format(4 * n1 * n2 * k3, "#,##0.00")
  39. s23 = Format(2 * n1 * n2 * k3 ^ 2, "#,##0.00")
  40. m1 = Format(T * n2 * n3 * n1 ^ 2, "#,##0.00")
  41. m2 = Format(T * 2 * k3 * n1 ^ 2, "#,##0.00")
  42. m3 = Format(T * 2 * n2 ^ 3 * n3, "#,##0.00")
  43. m4 = Format(T * 2 * n2 * n3, "#,##0.00")
  44. m5 = Format(T * 2 * n1 * n2 ^ 3, "#,##0.00")
  45. m6 = Format(T * 4 * n1 * n2 * n3 ^ 2, "#,##0.00")
  46. m7 = Format(T * 2 * n1 * n2, "#,##0.00")
  47. m8 = Format(T * 4 * n1 * n2 * k3, "#,##0.00")
  48. m9 = Format(T * 2 * n1 * n2 * k3 ^ 2, "#,##0.00")
  49. Add1 = s15
  50. Add2 = (-s16)
  51. Add3 = (s4 + s10 - s13 + s14 + s17 - s21 - m4 - m7 + m8)
  52. Add4 = (-s5 - s11 + s22 - m2)
  53. Add5 = (s1 - s2 + s3 + s6 + s7 - s8 + s9 + s12 - s18 + s19 - s20 - s23 - m1 - m3 - m5 - m6 - m9)
  54. Text10.Text = Add1 & "(n2^4)+" & Add2 & "(n2^3)+" & Add3 & "(n2^2)+" & Add4 & "(n2)+" & Add5
  55. A1 = Add1
  56. B1 = Add2
  57. C1 = Add3
  58. d1 = Add4
  59. E1 = Add5
  60. F1 = 0
  61. p1 = (8 * A1 * C1 - 3 * B1 ^ 2) / (8 * A1 ^ 2)
  62. r1 = (16 * A1 * B1 ^ 2 * C1 - 64 * A1 ^ 2 * B1 * d1 - 3 * B1 ^ 4 + 256 * A1 ^ 3 * E) / (256 * A1 ^ 4)
  63.  If ((p1 ^ 2 - 4 * r1) > 0) Or ((p1 ^ 2 - 4 * r1) = 0) Then
  64.   If ((-p1 + Sqr(p1 ^ 2 - 4 * r1)) >= 0) Then
  65.   Re11 = Sqr((-p1 + Sqr(p1 ^ 2 - 4 * r1)) / 2) - B1 / (4 * A1)
  66.   Im11 = 0
  67.   Re21 = -Sqr((-p1 + Sqr(p1 ^ 2 - 4 * r1)) / 2) - B1 / (4 * A1)
  68.   Im21 = 0
  69.           Else
  70.             Re11 = -B1 / (4 * A1)
  71.             Im11 = Sqr((p1 - Sqr(p1 ^ 2 - 4 * r1)) / 2)
  72.             Re21 = -B1 / (4 * A1)
  73.             Im21 = -Sqr((p1 - Sqr(p1 ^ 2 - 4 * r1)) / 2)
  74.             End If
  75.             End If
  76.    If ((-p1 - Sqr(Abs(p1 ^ 2 - 4 * r1))) >= 0) Then
  77.               Re31 = Sqr((-p1 - Sqr(p1 ^ 2 - 4 * r1)) / 2) - B1 / (4 * A1)
  78.               Im31 = 0
  79.               Re41 = -Sqr((-p1 - Sqr(p1 ^ 2 - 4 * r1)) / 2) - B1 / (4 * A1)
  80.               Im41 = 0
  81.               Else
  82.               Re31 = -B1 / (4 * A1)
  83.               Im31 = Sqr((p1 + Sqr(Abs(p1 ^ 2 - 4 * r1))) / 2)
  84.               Re41 = -B1 / (4 * A1)
  85.               Im41 = -Sqr((p1 + Sqr(Abs(p1 ^ 2 - 4 * r1))) / 2)
  86.               End If
  87.            
  88.         If p1 * p1 - 4 * r1 < 0 Then
  89.         If p1 < 0 Then F1 = Atn(-Sqr(Abs(4 * r1 - p1 ^ 2)) / p1)
  90.         End If
  91.         If p1 > 0 Then F1 = Atn(-Sqr(Abs(4 * r1 - p1 ^ 2) / p1)) + 3.14159265388979
  92.         If p1 = 0 Then F1 = 3.14159265388979 / 2
  93.         Re11 = Sqr(Sqr(Abs(r1))) * Cos(F1 / 2) - B1 / (4 * A1)
  94.         Im11 = Sqr(Sqr(Abs(r1))) * Sin(F1 / 2)
  95.         Re21 = Sqr(Sqr(Abs(r1))) * Cos(F1 / 2) - B1 / (4 * A1)
  96.         Im21 = -Sqr(Sqr(Abs(r1))) * Sin(F1 / 2)
  97.         Re31 = -Sqr(Sqr(Abs(r1))) * Cos(F1 / 2) - B1 / (4 * A1)
  98.         Im31 = Sqr(Sqr(Abs(r1))) * Sin(F1 / 2)
  99.         Re41 = -Sqr(Sqr(Abs(r1))) * Cos(F1 / 2) - B1 / (4 * A1)
  100.         Im41 = -Sqr(Sqr(Abs(r1))) * Sin(F1 / 2)
  101. 'Закончили расчёты и проверяем какое из четырех значений будет равно n2
  102. 'обновим значение n2 и заново будем производить с ним расчёты
  103. If (1 < Re11 < 3) Then
  104. k2 = Re11
  105. End If
  106. If (1 < Re21 < 3) Then
  107. k2 = Re21
  108. End If
  109. If (1 < Re31 < 3) Then
  110. k2 = Re31
  111. End If
  112. If (1 < Re41 < 3) Then
  113. k2 = Re41
  114. End If
  115. End If
  116. End Sub

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


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

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

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы