0 / 0 / 0
Регистрация: 19.01.2011
Сообщений: 73
|
|
1 | |
Некоторые вопросы по проге20.01.2011, 16:24. Показов 619. Ответов 2
Метки нет (Все метки)
В теме 3 дня, поэтому прошу сильно не пинать. Был конечно школьный опыт в qb и tp на xt-шках, но было давно...
Посмотрите код, есть пара вопросов: 1. Начиная с логических операторов пошел какой-то бред, хотя вроде рабочий . Все было бы ок, если бы было 2 условия (первый If) Но у меня есть 3 условие, которое в свою очередь ссылается на подусловие.... "со строчки x2=..." Да и по остальным участкам кода думаю много чего не так... В связи с этим прошу помочь привести код к нормалному виду. 2. Надоо сделать чтоб на форме все значения: и вписываемые и вычисляемые выводились в формате два знака после запятой. 3. Чтобы не вылетала прога когда вводишь вместо 1,0 - 1.0 или вместо цифры букву. Надо чтобы писала что-то типа недопустимый ввод и давала возможность исправить, ибо долго приходится перебивать заново. Собственно форма и код Private Sub Command1_Click() Dim h, b, a1, a2, Rb, Md, Ys, Yb1, Yb3, Yb4, d1, d2, n1, n2, As1, As2, Rs, Rsc, Es As Single ' ââîä ïåðåìåííûõ è êîíñòàíò Dim h0, x, Eps, Epsr, Mult, k, Esel, Mult1, Mult2, Mult3, x2 As Single Const pi = 3.14159 h = Text1.Text ' Ñ÷èòûâàíèå èñõîäíûõ äàííûõ èç ôîðìû b = Text2.Text a1 = Text3.Text a2 = Text4.Text Rb = Text6.Text Md = Text27.Text d1 = Text7.Text n1 = Text8.Text Rs = Text10.Text Es = Text11.Text d2 = Text12.Text n2 = Text13.Text Rsc = Text15.Text Ys = Text16.Text Yb1 = Text17.Text Yb3 = Text18.Text Yb4 = Text19.Text h0 = h - a1 ' Âû÷èñëåíèÿ âñïîìîãàòåëüíûõ âåëè÷èí Esel = Rs / Es Epsr = 0.8 / (1 + Esel / 0.0035) As1 = n1 * ((pi * d1 ^ 2) / 4) As2 = n2 * ((pi * d2 ^ 2) / 4) x = (Rs * As1 * Ys - Rsc * As2) / (Rb * b * Yb1 * Yb3 * Yb4) Eps = x / h0 Text22 = h0 'Âûâîä âñïîìîãàòåëüíûõ âåëè÷èí â ôîðìó Text23 = Epsr Text24 = x Text25 = Eps Text9 = As1 Text14 = As2 ' Âû÷èñëåíèå Mult ïðè 1-îì óñëîâèè (íà îñíîâàíèè ñðàâíåíèÿ Eps è Epsr) If Eps <= Epsr Then Mult = 0.01 * (0.1 * Rb * Yb1 * Yb3 * Yb4 * b * x * (h0 - 0.5 * x) + 0.1 * Rsc * As2 * (h0 - a2)) Else Mult = 0.01 * (0.1 * Rb * Yb1 * Yb3 * Yb4 * b * Epsr * h0 * (h0 - 0.5 * Epsr * h0) + 0.1 * Rsc * As2 * (h0 - a2)) End If ' Âû÷èñëåíèå çíà÷åíèé Mult ïðè 2-îì óñëîâèè (Rs*As1=Rsc*As2) x2 = (Rs * As1 * Ys) / (Rb * b * Yb1 * Yb3 * Yb4) If x2 <= 2 * a2 Then Mult2 = Rs * As1 * Ys * 0.001 * (h0 - x2 / 2) Else Mult2 = Rs * As1 * Ys * 0.001 * (h0 - a2) End If ' Âûáîð îêîí÷àòåëüíîãî çíà÷åíèÿ Mult: Mult2 ïðè óñëîâèè Rs*As1=Rsc*As2 èëè Mult â ñëó÷àå íåðàâåíñòâà If Rs * As1 = Rsc * As2 Then Mult = Mult2 Else Mult = Mult End If Text26 = Mult ' çàïîëíåíèå ÿ÷ååê ôîðìû Text28 = Md k = Md / Mult Text29 = k If k <= 1 Then Text30 = "Íåñóùàÿ ñïîñîáíîñòü ïî íîðìàëüíîìó ñå÷åíèþ îáåñïå÷åíà" Else Text30 = "Íåñóùàÿ ñïîñîáíîñòü ïî íîðìàëüíîìó ñå÷åíèþ íå îáåñïå÷åíà" End If End Sub Private Sub Command2_Click() Cls End Sub Private Sub Command3_Click() End End Sub СО ШРИФТОМ КАКОЙ_ТО БРЕД, КАК ИСПРАВИТЬ?
0
|
20.01.2011, 16:24 | |
Ответы с готовыми решениями:
2
Как сделать некоторые фрагменты в проге прозрачными? Вопросы по тестирующей проге Не понятны некоторые строчки в проге( как реализовать базу данных и зашитить от копирования. Общие вопросы по дедко-проге |
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
|
|
20.01.2011, 16:48 | 2 |
0
|
0 / 0 / 0
Регистрация: 19.01.2011
Сообщений: 73
|
|
21.01.2011, 09:56 [ТС] | 3 |
Private Sub Command1_Click()
Dim h, b, a1, a2, Rb, Md, Ys, Yb1, Yb3, Yb4, d1, d2, n1, n2, As1, As2, Rs, Rsc, Es As Single ' ввод переменных и констант Dim h0, x, Eps, Epsr, Mult, k, Esel, Mult1, Mult2, Mult3, x2 As Single Const pi = 3.14159 h = Text1.Text ' Считывание исходных данных из формы b = Text2.Text a1 = Text3.Text a2 = Text4.Text Rb = Text6.Text Md = Text27.Text d1 = Text7.Text n1 = Text8.Text Rs = Text10.Text Es = Text11.Text d2 = Text12.Text n2 = Text13.Text Rsc = Text15.Text Ys = Text16.Text Yb1 = Text17.Text Yb3 = Text18.Text Yb4 = Text19.Text h0 = h - a1 ' Вычисления вспомогательных величин Esel = Rs / Es Epsr = 0.8 / (1 + Esel / 0.0035) As1 = n1 * ((pi * d1 ^ 2) / 4) As2 = n2 * ((pi * d2 ^ 2) / 4) x = (Rs * As1 * Ys - Rsc * As2) / (Rb * b * Yb1 * Yb3 * Yb4) Eps = x / h0 Text22 = h0 'Вывод вспомогательных величин в форму Text23 = Epsr Text24 = x Text25 = Eps Text9 = As1 Text14 = As2 ' Вычисление Mult при 1-ом условии (на основании сравнения Eps и Epsr) If Eps <= Epsr Then Mult = 0.01 * (0.1 * Rb * Yb1 * Yb3 * Yb4 * b * x * (h0 - 0.5 * x) + 0.1 * Rsc * As2 * (h0 - a2)) Else Mult = 0.01 * (0.1 * Rb * Yb1 * Yb3 * Yb4 * b * Epsr * h0 * (h0 - 0.5 * Epsr * h0) + 0.1 * Rsc * As2 * (h0 - a2)) End If ' Вычисление значений Mult при 2-ом условии (Rs*As1=Rsc*As2) x2 = (Rs * As1 * Ys) / (Rb * b * Yb1 * Yb3 * Yb4) If x2 <= 2 * a2 Then Mult2 = Rs * As1 * Ys * 0.001 * (h0 - x2 / 2) Else Mult2 = Rs * As1 * Ys * 0.001 * (h0 - a2) End If ' Выбор окончательного значения Mult: Mult2 при условии Rs*As1=Rsc*As2 или Mult в случае неравенства If Rs * As1 = Rsc * As2 Then Mult = Mult2 Else Mult = Mult End If Text26 = Mult ' заполнение ячеек формы Text28 = Md k = Md / Mult Text29 = k If k <= 1 Then Text30 = "Несущая способность по нормальному сечению обеспечена" Else Text30 = "Несущая способность по нормальному сечению не обеспечена" End If End Sub Private Sub Command2_Click() Cls End Sub Private Sub Command3_Click() End End Sub Добавлено через 16 часов 41 минуту Немного переделал код используя инструкцию ElseIf для упрощения x2 = (Rs * As1 * Ys) / (Rb * b * Yb1 * Yb3 * Yb4) ' Вычисление вспомогательных величин для случая 3 If x2 <= 2 * a2 Then Mult2 = Rs * As1 * Ys * 0.001 * (h0 - x2 / 2) Else Mult2 = Rs * As1 * Ys * 0.001 * (h0 - a2) End If ' Вычисление Mult (выбор из 3-х условий) If Eps <= Epsr Then Mult = 0.01 * (0.1 * Rb * Yb1 * Yb3 * Yb4 * b * x * (h0 - 0.5 * x) + 0.1 * Rsc * As2 * (h0 - a2)) ElseIf Eps > Epsr Then Mult = 0.01 * (0.1 * Rb * Yb1 * Yb3 * Yb4 * b * Epsr * h0 * (h0 - 0.5 * Epsr * h0) + 0.1 * Rsc * As2 * (h0 - a2)) ElseIf Rs * As1 * Ys = Rsc * As2 Then Mult = Mult2 End If
0
|
21.01.2011, 09:56 | |
21.01.2011, 09:56 | |
Помогаю со студенческими работами здесь
3
Некоторые вопросы Некоторые вопросы по синтаксису Некоторые вопросы по ucoz'у Некоторые вопросы по flowLayoutPanel Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |