Вывод данных и график - 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

Код к задаче: «Вывод данных и график - VB»

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
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

15   голосов, оценка 4.133 из 5


СДЕЛАЙТЕ РЕПОСТ