Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 19.01.2011
Сообщений: 73
1

Некоторые вопросы по проге

20.01.2011, 16:24. Показов 619. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В теме 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2011, 16:24
Ответы с готовыми решениями:

Как сделать некоторые фрагменты в проге прозрачными?
Слуште. Поиск на форуме не пашет почмуто поэтому решил тему создать. Как сделать некоторые...

Вопросы по тестирующей проге
Нужна помощь, столкнулся с некоторыми проблемами в следующей функции void read_questions (vector...

Не понятны некоторые строчки в проге(
Вот есть код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; ...

как реализовать базу данных и зашитить от копирования. Общие вопросы по дедко-проге
Всем привет. Начну с истории. Меня попросил отец сделать программку для книжного магазинчика, в ней...

2
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
20.01.2011, 16:48 2
Цитата Сообщение от ooze1 Посмотреть сообщение
СО ШРИФТОМ КАКОЙ_ТО БРЕД
попробуй копировать при русской раскладке
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2011, 09:56
Помогаю со студенческими работами здесь

Некоторые вопросы
Всем привет ! Я недавно начал изучать Паскаль, и у меня возникло несколько вопросов, которые я бы...

Некоторые вопросы по синтаксису
Будьте так добры, пожалуйста. Помогите чуток)). Я сам сишник, а тут мне тест по учебе дали на...

Некоторые вопросы по ucoz'у
Хотелось бы вот эту форму заполнения сделать по центру. Изначально она была растянута и была очень...

Некоторые вопросы по flowLayoutPanel
Можно ли добавить в flowLayoutPanel 3 рядом стоящие компонента по горизонтали но при этом чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru