Created
October 21, 2017 17:07
VB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Public Class Form1 | |
Dim X2, PP, EEE, X1, X3, T1, T2, T3, N1, N2, N3, TE123, TE1, TE2, TE3, X1123, X2123, X3123, Y As Double | |
Private Sub ВыходToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ВыходToolStripMenuItem.Click | |
Close() | |
End Sub | |
Private Sub ОПрограммеToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ОПрограммеToolStripMenuItem.Click | |
Form2.ShowDialog() | |
End Sub | |
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click | |
End Sub | |
Private Function chk(ByVal T As TextBox) As Boolean | |
Dim separator As String = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator(0) | |
Dim s As String = T.Text.Replace(".", separator) : T.BackColor = Color.White : T.Text = s : chk = True | |
If Not IsNumeric(s) Then | |
MessageBox.Show("В поле ввода следует вводить числа.", "Ошибка ввода", MessageBoxButtons.OK, MessageBoxIcon.Warning) | |
T.Clear() : T.Focus() : T.BackColor = Color.Bisque | |
Return False | |
End If | |
End Function | |
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click | |
Button2.Enabled = True | |
For k As Integer = 4 To 9 | |
If Not chk(Me.Controls("TextBox" & k)) Then Exit Sub | |
Next | |
For k As Integer = 4 To 9 | |
If Me.Controls("TextBox" & k).Text < 1 Then | |
MessageBox.Show("Температура или количество атомов не может принимать отрицательное значение", "Ошибка ввода", MessageBoxButtons.OK, MessageBoxIcon.Warning) | |
Me.Controls("TextBox" & k).Focus() : Me.Controls("TextBox" & k).BackColor = Color.Bisque | |
Exit Sub | |
End If | |
Next | |
For k As Integer = 4 To 6 | |
If Me.Controls("TextBox" & k).Text > 2500 Then | |
MessageBox.Show("Температура не может быть такой большой!", "Ошибка ввода", MessageBoxButtons.OK, MessageBoxIcon.Warning) | |
Me.Controls("TextBox" & k).Focus() : Me.Controls("TextBox" & k).BackColor = Color.Bisque | |
Exit Sub | |
End If | |
Next | |
For k As Integer = 7 To 9 | |
If Me.Controls("TextBox" & k).Text > 40 Then | |
MessageBox.Show("Слишком много атомов для соединения!", "Ошибка ввода", MessageBoxButtons.OK, MessageBoxIcon.Warning) | |
Me.Controls("TextBox" & k).Focus() : Me.Controls("TextBox" & k).BackColor = Color.Bisque | |
Exit Sub | |
End If | |
Next | |
Dim Triangle, pText As Graphics | |
Triangle = PictureBox1.CreateGraphics | |
pText = PictureBox1.CreateGraphics | |
Triangle.Clear(PictureBox1.BackColor) | |
Triangle.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias | |
Dim font As New System.Drawing.Font("Tahoma", 10) | |
Dim font2 As New System.Drawing.Font("Tahoma", 7) | |
Dim tA, tB, tC As String | |
tA = TextBox1.Text | |
tB = TextBox2.Text | |
tC = TextBox3.Text | |
pText.DrawString(tB, font, Brushes.Red, 155, 8) | |
pText.DrawString(tA, font, Brushes.Red, 10, 259) | |
pText.DrawString(tC, font, Brushes.Red, 297, 259) | |
T1 = TextBox4.Text | |
T2 = TextBox5.Text | |
T3 = TextBox6.Text | |
N1 = TextBox7.Text | |
N2 = TextBox8.Text | |
N3 = TextBox9.Text | |
X2 = 0 | |
PP = 1 | |
EEE = 0.0001 | |
Do | |
PP = PP / 10 | |
var: X2 = X2 + PP | |
X1 = Math.Exp(N1 * (1 - T1 * (1 - Math.Log(X2) / N2) / T2)) | |
Y = X1 + X2 - 1 | |
If Math.Abs(Y) < EEE Then Exit Do | |
If Y < 0 Then GoTo var | |
X2 = X2 - PP | |
Loop While True | |
TE1 = T1 / (1 - Math.Log(X1) / N1) | |
X2 = 0 | |
PP = 1 | |
EEE = 0.0001 | |
Do | |
PP = PP / 10 | |
var1: X2 = X2 + PP | |
X1 = Math.Exp(N1 * (1 - T1 * (1 - Math.Log(X2) / N2) / T2)) | |
X3 = Math.Exp(N3 * (1 - T3 * (1 - Math.Log(X2) / N2) / T2)) | |
Y = X1 + X2 + X3 - 1 | |
If Math.Abs(Y) < EEE Then Exit Do | |
If Y < 0 Then GoTo var1 | |
X2 = X2 - PP | |
Loop While True | |
TE123 = T1 / (1 - Math.Log(X1) / N1) | |
X1123 = X1 | |
X2123 = X2 | |
X3123 = X3 | |
Dim TE1, TE2, TE3 As Double | |
TE1 = TextBox4.Text / (1 - Math.Log(X1123 / (X1123 + X2123)) / TextBox7.Text) | |
TE2 = TextBox5.Text / (1 - Math.Log(X2123 / (X2123 + X3123)) / TextBox8.Text) | |
TE3 = TextBox6.Text / (1 - Math.Log(X3123 / (X3123 + X1123)) / TextBox9.Text) | |
Dim pSS, pCC, pX1, pX2, pX3, pY1, pY2, pY3, pXAB, pYAB, pXABC, pYABC, pXAC, pYAC, pXBC, pYBC, X112, X113, X223, X212, X313, X323 As Single | |
pSS = Math.Sqrt(3) / 2 | |
pCC = 0.5 | |
pX1 = 0 | |
pX2 = 160 | |
pX3 = 320 | |
pY1 = 277.13 | |
pY2 = 0 | |
pY3 = 277.13 | |
X112 = X1 | |
X212 = X2 | |
X113 = X1 | |
X313 = X2 | |
X223 = X1 | |
X323 = X2 | |
Label8.Text = X112 | |
Label9.Text = X313 | |
Label10.Text = X223 | |
Triangle.DrawLine(Pens.Black, pX1, pY1, pX2, pY2) | |
Triangle.DrawLine(Pens.Black, pX1, pY1, pX3, pY3) | |
Triangle.DrawLine(Pens.Black, pX2, pY2, pX3, pY3) | |
pXAB = 0 + 320 * X2 * pCC | |
pXAC = 0 + 320 * X1 | |
pXBC = 320 - 320 * X2 * pCC | |
pXABC = 0 + 320 * X2123 * pCC + 320 * X3123 | |
pYABC = 277.13 - (320 * X2123 * pSS) | |
pYAB = 277.13 - (320 * X2 * pSS) | |
pYAC = 277.13 | |
pYBC = 277.13 - (320 * X223 * pSS) | |
Triangle.DrawLine(Pens.Black, pXAB, pYAB, pXABC, pYABC) | |
Triangle.DrawLine(Pens.Black, pXAC, pYAC, pXABC, pYABC) | |
Triangle.DrawLine(Pens.Black, pXBC, pYBC, pXABC, pYABC) | |
Dim redBrush As New SolidBrush(Color.Black) | |
Triangle.FillEllipse(redBrush, pXABC - 2, pYABC - 2, 6, 6) | |
pText.DrawString("TE123 = " & Format(TE123, "#.##") & " K", font2, Brushes.Green, pXABC, pYABC - 17) | |
Triangle.FillEllipse(redBrush, pXAB - 2, pYAB - 2, 6, 6) | |
pText.DrawString("TE1 = " & Format(TE1, "#.##") & " K", font2, Brushes.Green, pXAB - 48, pYAB - 17) | |
pText.Dispose() | |
Triangle.FillEllipse(redBrush, pXAC - 2, pYAC - 2, 6, 6) | |
pText.DrawString("TE3 = " & Format(TE3, "#.##") & " K", font2, Brushes.Green, pXAC, pYAC) | |
pText.Dispose() | |
Dim XX1, XX2, XX3 As String | |
XX1 = TextBox1.Text | |
XX2 = TextBox2.Text | |
XX3 = TextBox3.Text | |
Label1.Text = XX1 & " = " & Format(X1 * 100, "#.##") & " мол %" | |
Label2.Text = XX2 & " = " & Format(X2 * 100, "#.##") & " мол %" | |
Label3.Text = XX3 & " = " & Format(X3 * 100, "#.##") & " мол %" | |
Label4.Text = "TE123 = " & Format(TE123, "#.##") & " K" | |
End Sub | |
Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged | |
If CheckBox1.Checked Then | |
TE123 = TE123 - 273.15 | |
Label4.Text = "TE123 = " & Format(TE123, "#.##") & " °С" | |
Else | |
Label4.Text = "TE123 = " & Format(TE123, "#.##") & " K" | |
TE123 = TE123 | |
End If | |
End Sub | |
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged | |
If CheckBox1.Checked Then | |
Label6.Text = "Температура (°C):" | |
T1 = T1 + 273.15 | |
T2 = T2 + 273.15 | |
T3 = T3 + 273.15 | |
Else | |
Label6.Text = "Температура (K):" | |
T1 = T1 | |
T2 = T2 | |
T3 = T3 | |
End If | |
End Sub | |
End Class |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment