Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2017, 15:20   #1
aberg
Новичок
Джуниор
 
Регистрация: 03.11.2016
Сообщений: 1
По умолчанию ПО на VB6

Начал изучать VB6.Пишу программу для расчёта коэффициентов.Хочу сделать так: в форме пользователь задал начальные значения n1,n2,n3,k2,k3, она их обработала,поставив в формулы и в итоге заново рассчитала значение n2,которое автоматически подставляет вместо начального и производит расчёты по новой.И так до тех пор по n2 не станет равным к примеру трём.Не могу понять,как правильно это записать.К примеру кусок моего кода(скорее всего неверный).В интернете ничего путнего не найду.Буду благодарен за любую помощь,может кто знает подобные примеры,алгоритмы или статьи по этой теме.
Код:
Public Sub Command1_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 d1 As Double, l As Double, S As Double
Dim v1 As Double, v2 As Double, v3 As Double, v4 As Double, v5 As Double, v6 As Double, v7 As Double, v8 As Double, v9 As Double, v10 As Double, v11 As Double, v12 As Double, v13 As Double, v14 As Double, v15 As Double, v16 As Double, v17 As Double, v18 As Double, v19 As Double, v20 As Double, v21 As Double, v22 As Double, v23 As Double
Dim u1 As Double, u2 As Double, u3 As Double, u4 As Double, u5 As Double, u6 As Double, u7 As Double, u8 As Double, u9 As Double
Dim App1, App2, App3, App4, App5 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
While (n2<>3) 'пока n2 не равно 3
'вводим начальные значения
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)
'Дальше идет расчёт значений
T = Tmax / Tmin
v1 = Format(n1 ^ 2, "#,##0.00")
v2 = Format(2 * n1 ^ 2 * n3, "#,##0.00")
v3 = Format(2 * n3 ^ 2 * n1 ^ 2, "#,##0.00")
v4 = Format(2 * k2 ^ 2 * n1 ^ 2, "#,##0.00")
v5 = Format(4 * k3 * k2 * n1 ^ 2, "#,##0.00")
v6 = Format(2 * k3 ^ 2 * n1 ^ 2, "#,##0.00")
v7 = 2
v8 = Format(2 * n3, "#,##0.00")
v9 = Format(2 * n3 ^ 2, "#,##0.00")
v10 = Format(4 * k2 ^ 2, "#,##0.00")
v11 = Format(4 * k2 * k3, "#,##0.00")
v12 = Format(2 * k3 ^ 2, "#,##0.00")
v13 = Format(2 * n3 * k2 ^ 2, "#,##0.00")
v14 = Format(2 * k2 ^ 2 * n3 ^ 2, "#,##0.00")
v15 = Format(2 * k2 ^ 4, "#,##0.00")
v16 = Format(4 * k3 * k2 ^ 3, "#,##0.00")
v17 = Format(2 * k3 ^ 2 * k2 ^ 2, "#,##0.00")
v18 = Format(2 * n1, "#,##0.00")
v19 = Format(8 * n3 * n1, "#,##0.00")
v20 = Format(2 * n1 * n3 ^ 2, "#,##0.00")
v21 = Format(2 * n1 * k2 ^ 2, "#,##0.00")
v22 = Format(4 * n1 * k2 * k3, "#,##0.00")
v23 = Format(2 * n1 * k3 ^ 2, "#,##0.00")
u1 = Format(T * n1 * n1 ^ 2, "#,##0.00")
u2 = Format(T * 2 * n1 ^ 2 * k3 * k2, "#,##0.00")
u3 = Format(T * 2 * n3, "#,##0.00")
u4 = Format(T * 2 * n3 * k2 ^ 2, "#,##0.00")
u5 = Format(T * 2 * n1, "#,##0.00")
u6 = Format(T * 2 * n1 * n3 ^ 2, "#,##0.00")
u7 = Format(T * 2 * n1 * k2 ^ 2, "#,##0.00")
u8 = Format(T * 4 * n1 * k2 * k3, "#,##0.00")
u9 = Format(T * 2 * n1 * k3 ^ 2, "#,##0.00")
App1 = v7
App2 = (-v8 - v18 - u3 - u5)
App3 = (v1 + v9 + v10 - v11 + v12 + v19)
App4 = (-v2 - v13 - v20 - v21 + v22 - u1 - u4 - u6 - u7 + u8 - u9)
App5 = (v3 + v4 - v5 + v6 + v14 + v15 - v16 + v17 - u2)
Text8.Text = App1 & "(n2^4)+" & App2 & "(n2^3)+" & App3 & "(n2^2)+" & App4 & "(n2)+" & App5
A = App1
B = App2
C = App3
d = App4
E = App5
F = 0
p = (8 * A * C - 3 * B ^ 2) / (8 * A ^ 2)
r = (16 * A * B ^ 2 * C - 64 * A ^ 2 * B * d - 3 * B ^ 4 + 256 * A ^ 3 * E) / (256 * A ^ 4)
 If ((p ^ 2 - 4 * r) > 0) Or ((p ^ 2 - 4 * r) = 0) Then
  If ((-p + Sqr(p ^ 2 - 4 * r)) >= 0) Then
  Re1 = Sqr((-p + Sqr(p ^ 2 - 4 * r)) / 2) - B / (4 * A)
  Im1 = 0
  Re2 = -Sqr((-p + Sqr(p ^ 2 - 4 * r)) / 2) - B / (4 * A)
  Im2 = 0
          Else
            Re1 = -B / (4 * A)
            Im1 = Sqr((p - Sqr(p ^ 2 - 4 * r)) / 2)
            Re2 = -B / (4 * A)
            Im2 = -Sqr((p - Sqr(p ^ 2 - 4 * r)) / 2)
            End If
            End If
   If ((-p - Sqr(Abs(p ^ 2 - 4 * r))) >= 0) Then
              Re3 = Sqr((-p - Sqr(p ^ 2 - 4 * r)) / 2) - B / (4 * A)
              Im3 = 0
              Re4 = -Sqr((-p - Sqr(p ^ 2 - 4 * r)) / 2) - B / (4 * A)
              Im4 = 0
              Else
              Re3 = -B / (4 * A)
              Im3 = Sqr((p + Sqr(Abs(p ^ 2 - 4 * r))) / 2)
              Re4 = -B / (4 * A)
              Im4 = -Sqr((p + Sqr(Abs(p ^ 2 - 4 * r))) / 2)
              End If
           
        If p * p - 4 * r < 0 Then
        If p < 0 Then F = Atn(-Sqr(Abs(4 * r - p ^ 2)) / p)
        End If
        If p > 0 Then F = Atn(-Sqr(Abs(4 * r - p ^ 2) / p)) + 3.14159265388979
        If p = 0 Then F = 3.14159265388979 / 2
        Re1 = Sqr(Sqr(Abs(r))) * Cos(F / 2) - B / (4 * A)
        Im1 = Sqr(Sqr(Abs(r))) * Sin(F / 2)
        Re2 = Sqr(Sqr(Abs(r))) * Cos(F / 2) - B / (4 * A)
        Im2 = -Sqr(Sqr(Abs(r))) * Sin(F / 2)
        Re3 = -Sqr(Sqr(Abs(r))) * Cos(F / 2) - B / (4 * A)
        Im3 = Sqr(Sqr(Abs(r))) * Sin(F / 2)
        Re4 = -Sqr(Sqr(Abs(r))) * Cos(F / 2) - B / (4 * A)
        Im4 = -Sqr(Sqr(Abs(r))) * Sin(F / 2)
'Рассчитали Re1,Re2,Re3,Re4 и задаем условие
If (1 < Re1 < 3) Then 'Если Re1 удовлетворяет условиям,то его значение должно быть равным n2,которое заново подставляется в уравнения выше
n2 = Re1
End If
'Аналогично
If (1 < Re2 < 3) Then
n2 = Re2
End If
If (1 < Re3 < 3) Then
n2 = Re3
End If
If (1 < Re4 < 3) Then
n2 = Re4
End If
Wend
End Sub
aberg вне форума Ответить с цитированием
Старый 17.03.2017, 16:22   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Зачем Format если не выводить никуда, работайте "как есть".
3.14159265388979 можно в
Код:
Const PI = 3.14159265
вынести
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IXMLDOMElement в VB6 amator_roma Помощь студентам 1 06.07.2011 10:49
VB6 цикл amator_roma Помощь студентам 1 15.06.2011 15:34
Вопрос по VB6 gscrychili Помощь студентам 2 25.03.2011 00:00
vb6 ULIA92 Помощь студентам 0 22.04.2010 12:13
Вопрос по VB6 kobolok Помощь студентам 1 27.05.2009 20:17