Skip to content

Instantly share code, notes, and snippets.

Created October 21, 2017 17:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/19223b55c95eb4589ba7d09dc5167f4b to your computer and use it in GitHub Desktop.
Save anonymous/19223b55c95eb4589ba7d09dc5167f4b to your computer and use it in GitHub Desktop.
VB
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