Вывод данных и график - VB
Формулировка задачи:
Проблема:
1)Нужно переделать вывод данных в файл таким образом, чтобы после каждого нового запуска программы они перезаписывались вместо предыдущих (сейчас программа выводит данные, добавляя их к старым, в итоге в txt файле и новые и старые данные).
Печать в файл на 91 строке
Создание файла: 50-62 строки
2)Нужно поменять количество цифр после запятой (сейчас программа печатает 111,111111111111, а нужно чтобы округляло до 111,11)
Задача:
Построить график распределения температур во времени по: Tau; T1(5); T1(10); T1(20) все эти данные нужно брать из txt файла в который выводит (печатает) программа ранее.
Tau - это время(интервал времени) в секундах
T1(5); T1(10); T1(20) - это температуры в цельсиях
[IMG]http://i.***********/i4/09/c2/af72890ebe935345c21654476937.jpeg[/IMG]
Листинг программы
- Const RO As Double = 7600#
- Const Cm As Double = 720#
- Const LamDA0 As Double = 50#
- Const K As Double = 0.22
- Const S As Double = 0.1
- Const T0_1 As Double = 20#
- Const T0_2 As Double = 50#
- Const Tc As Double = 1200#
- Const ALFC As Double = 22#
- Const q As Double = 0#
- Const dTau As Double = 5#
- Const dx As Double = 0.005
- Const N As Integer = 20
- Const TauPr As Double = 1800#
- Dim NewFSO As New ErrObject
- Dim sNameFolder As Double
- Dim sNameFile As Double
- Dim File
- Dim i As Integer, Rc As Double, R1 As Double, R2 As Double, R0 As Double, J As Integer, Tau As Double, TauFlag As Double
- Dim A(N) As Double, B(N) As Double, C(N) As Double, D(N) As Double 'dbl при ошибках добавить и имена
- 'Dim dblALF1 As Double, dblBETA1 As Double
- Dim ALF(N) As Double, BETA(N) As Double 'dbl при ошибках добавить и имена
- Dim T1(N) As Double, T2(N) As Double 'dbl при ошибках добавить и имена
- Dim MAS(1 To 20) As Integer 'массив
- Function LA(T As Double) As Double
- If T < 800 Then
- a0 = 57#
- b0 = -0.056
- Else
- a0 = 14.58
- b0 = 0.019
- End If
- LA = a0 + b0 * T
- End Function
- Function Tcr() As Double
- Tcr = 0#
- For i = 1 To N
- Tcr = Tcr + T2(i)
- Next i
- Tcr = Tcr / N
- End Function
- Private Sub Command1_Click()
- Picture1.Print i; T1(5); T1(10); T1(20)
- Picture1.Print Tau / 3600#
- End Sub
- Private Sub cbCreate_Click()
- ' Создание файла
- Dim NewFile As TextStream
- sNameFile = dirFolders.Path + "E:\NewFile.txt" + txtNameFile.Text
- Set NewFile = NewFSO.CreateTextFile(sNameFile)
- filFiles.Refresh
- End Sub
- Private Sub Command2_Click()
- '--------------выводить график по нажтию на кнопку
- End Sub
- Private Sub Form_Load()
- Open "D:\NewFile.txt" For Append As #1
- Tau = 0#
- TauFlag = 0#
- 'Dim i(1 To 20) As Integer 'одномерный масив????????
- 'Начальные данные
- For i = 1 To 20 'до 20 т.к. у нас 20 точек
- If i <= 4 Then
- T1(i) = T0_2
- Else
- T1(i) = T0_1
- End If
- Next i
- '--------------------------------------------
- Do
- Tau = Tau + dTau
- TauFlag = TauFlag + dTau
- If TauFlag = TauPr Then
- TauFlag = 0#
- Print #1, Tau; T1(5); T1(10); T1(20)
- End If
- For i = 1 To N
- If i = 1 Then
- Rc = 1# / ALFC
- R1 = 0.5 * dx / LA(T1(i)) 'R1 = dx / (2# * LamDA0)
- R2 = 0.5 * dx / LA(T1(i + 1)) 'R2 = dx / (2# * LamDA0)
- A(1) = 0#
- B(1) = (Cm * RO * dx) / dTau + 1# / (Rc + R1) + 1# / (R1 + R2)
- C(1) = -1# / (R2 + R1)
- D(1) = (Cm * RO * dx) / dTau * T1(i) + Tc / (Rc + R1) 'правильно ли указал Т
- End If
- If i > 1 And i < N Then
- R0 = 0.5 * dx / LA(T1(i - 1)) 'R0 = dx / (2# * LamDA0) 'R(i-1), правильно ли указал Т1
- R1 = 0.5 * dx / LA(T1(i)) 'R1 = dx / (2# * LamDA0) 'R(i)
- R2 = 0.5 * dx / LA(T1(i + 1)) 'R2 = dx / (2# * LamDA0)
- 'Tij как это описать-----------------------------
- A(i) = -1# / (R0 + R1)
- B(i) = (Cm * RO * dx) / dTau + 1# / (R0 + R1) + 1# / (R2 + R1)
- C(i) = -1# / (R2 + R1)
- D(i) = (Cm * RO * dx) / dTau * T1(i) 'правильно ли указал Т
- End If
- If i = N Then
- R0 = 0.5 * dx / LA(T1(i - 1)) 'R0 = dx / (2# * LamDA0) 'R(i-1)
- R1 = 0.5 * dx / LA(T1(i)) 'R1 = dx / (2# * LamDA0) 'R(i)
- 'Tij как описать-----------------------------
- A(N) = -1# / (R0 + R1)
- B(N) = (Cm * RO * dx) / dTau + 1# / (R0 + R1)
- C(N) = 0#
- D(N) = (Cm * RO * dx) / dTau * T1(i) 'правильно ли указал Т
- End If
- Next i
- For i = 1 To N
- If i = 1 Then
- ALF(1) = -C(1) / B(1)
- BETA(1) = D(1) / B(1)
- Else
- ALF(i) = -C(i) / (B(i) + A(i) * ALF(i - 1)) 'правильно ли указал ALF1
- BETA(i) = (-A(i) * BETA(i - 1) + D(i)) / (B(i) + A(i) * ALF(i - 1)) 'правильно ли указал ALF1
- End If
- Next i
- For i = N To 1 Step -1
- If i = N Then
- T2(i) = BETA(i) 'где используется бетта
- Else
- T2(i) = ALF(i) * T2(i + 1) + BETA(i) 'точно ли Т0_2 в начале
- End If
- Next i
- For i = 1 To N
- T1(i) = T2(i)
- Next i
- Loop Until Tcr() >= 800
- '---------------------------------------
- Close #1
- End Sub
Решение задачи: «Вывод данных и график»
textual
Листинг программы
- Private Sub Command3_Click()
- With MSChart1
- ' Displays a 3d chart with 8 columns and 8 rows
- ' data.
- .chartType = VtChChartType2dLine
- .ColumnCount = 3
- .RowCount = 15
- For Column = 1 To 3
- For Row = 1 To 15
- .Column = Column
- .Row = Row
- .Data = Row * 54
- Next Row
- Next Column
- ' Use the chart as the backdrop of the legend.
- .ShowLegend = True
- .SelectPart VtChPartTypePlot, index1, index2, _
- index3, index4
- .EditCopy
- .SelectPart VtChPartTypeLegend, index1, _
- index2, index3, index4
- .EditPaste
- End With
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д