Ошибка ран тайм 13 тайп мисматч - VB
Формулировка задачи:
ребята вот у меня есть такая прога
и когд запускаю прогу выбивает как раз ошибку 13 по метке 100, видимо я где-то накосячил с типом данных переменных... помогите чем можете!!!
Листинг программы
- Dim t As Double
- Dim strFileName As String
- Dim strFileContent As String
- Dim nFreeFile As Integer
- Dim nFileLenght As Integer
- Private Sub cbRas_Click()
- Dim xt(30), yt(30), xm(120), ym(2, 120), x, Y(2), H, H1, Smax, Amax As Double
- V = 0.00182
- A = 0.082
- C = 696
- M = 2.03
- K = 989
- P0 = 100000
- G = 1.2
- Y(1) = 0
- Y(2) = 0
- H = t / 120
- H1 = H / 100
- x = 0
- xm(1) = 0
- ym(1, 1) = 0
- ym(2, 1) = 0
- Smax = ym(1, 1)
- Amax = ym(2, 1)
- Val (Text2(0))
- Val (Text2(1))
- Val (Text2(2))
- Val (Text2(3))
- Val (Text2(4))
- Val (Text2(5))
- Val (Text2(6))
- Val (Text2(7))
- Val (Text2(8))
- Val (Text2(9))
- Val (Text2(10))
- Val (Text2(11))
- Val (Text2(12))
- Val (Text2(13))
- Val (Text2(14))
- Val (Text2(15))
- Val (Text2(16))
- Val (Text2(17))
- Val (Text2(18))
- Val (Text2(19))
- Val (Text2(20))
- Val (Text2(21))
- Val (Text2(22))
- Val (Text2(23))
- Val (Text2(24))
- Val (Text2(25))
- Val (Text2(26))
- Val (Text2(27))
- Val (Text2(28))
- Val (Text2(29))
- Val (Text2(30))
- Val (Text3(0))
- Val (Text3(1))
- Val (Text3(2))
- Val (Text3(3))
- Val (Text3(4))
- Val (Text3(5))
- Val (Text3(6))
- Val (Text3(7))
- Val (Text3(8))
- Val (Text3(9))
- Val (Text3(10))
- Val (Text3(11))
- Val (Text3(12))
- Val (Text3(13))
- Val (Text3(14))
- Val (Text3(15))
- Val (Text3(16))
- Val (Text3(17))
- Val (Text3(18))
- Val (Text3(19))
- Val (Text3(20))
- Val (Text3(21))
- Val (Text3(22))
- Val (Text3(23))
- Val (Text3(24))
- Val (Text3(25))
- Val (Text3(26))
- Val (Text3(27))
- Val (Text3(28))
- Val (Text3(29))
- Val (Text3(30))
- For I = 0 To 30
- xt(I) = Text2(I)
- yt(I) = Text3(I)
- Next
- For k1 = 2 To 121
- For k2 = 1 To 100
- F1 = Y(2)
- F2 = (-C / M) * Y(2) - K / M * Y(1) + A / M * (P(x, xt, yt, 30) + (1 - (V / (V - A * Y(1))) ^ G)) * 100000
- x = x + H1
- Y(1) = Y(1) + F1 * H1
- Y(2) = Y(2) + F2 * H1
- Next
- xm(k1) = x
- ym(1, k1) = Y(1) * 100
- ym(2, k1) = Y(2)
- If Abs(ym(1, k1)) > Abs(Smax) Then Smax = ym(1, k1)
- If Abs(ym(2, k1)) > Abs(Amax) Then Amax = ym(2, k1)
- Next
- Print Smax, Amax
- End Sub
- Function P(x, xt, yt, N) As Double
- For I = 1 To N
- If x > xt(30) Or x < xt(30) Then x = xt(30)
- If x >= xt(I - 1) And x <= xt(I) Then GoTo 100
- Next
- Print 'Значение х лежит вне таблич. знач.
- Stop
- 100: P = yt(I - 1) + (yt(I) - yt(I - 1)) * (x - xt(I - 1)) / (xt(I) - xt(I - 1)) ' тут ошибка
- Return
- End Function
Решение задачи: «Ошибка ран тайм 13 тайп мисматч»
textual
Листинг программы
- Function P(x, xt, yt, N) As Double
- For I = 0 To (N - 1)
- If x > xt(30) And x < xt(30) - t / 10000 Then x = xt(30)
- If x >= xt(I) And x <= xt(I + 1) Then GoTo 100
- Next
- Print 'Значение х лежит вне таблич. знач.'
- Stop
- ' выделенный блок - начало
- 100: P = yt(I) + (yt(I + 1) - yt(I)) * (x - xt(I)) / (xt(I + 1) - xt(I))
- ' выделенный блок - конец
- End Function
- Private Sub cbRas_Click()
- ' выделенный блок - начало
- Dim xt(30) As Double, yt(30) As Double, xm(120) As Double, ym(2, 120) As Double, x As Double, Y(2) As Double, H As Double, H1 As Double, Smax As Double, Amax As Double
- t = xt(30)
- ' выделенный блок - конец
- V = 0.00182
- A = 0.082
- C = 696
- M = 2.03
- K = 989
- P0 = 100000
- G = 1.2
- Y(1) = 0
- Y(2) = 0
- H = t / 120
- H1 = H / 100
- x = 0
- xm(1) = 0
- ym(1, 1) = 0
- ym(2, 1) = 0
- Smax = ym(1, 1)
- Amax = ym(2, 1)
- ' выделенный блок - начало
- For I = 0 To 30
- xt(I) = Val(Text2(I).Text)
- yt(I) = Val(Text3(I).Text)
- Next
- ' выделенный блок - конец
- For k1 = 2 To 121
- For k2 = 1 To 100
- F1 = Y(2)
- F2 = (-C / M) * Y(2) - K / M * Y(1) + A / M * (P(x, xt, yt, 30) + (1 - (V / (V - A * Y(1))) ^ G)) * 100000
- x = x + H1
- Y(1) = Y(1) + F1 * H1
- Y(2) = Y(2) + F2 * H1
- Next
- xm(k1) = x
- ym(1, k1) = Y(1) * 100
- ym(2, k1) = Y(2)
- If Abs(ym(1, k1)) > Abs(Smax) Then Smax = ym(1, k1)
- If Abs(ym(2, k1)) > Abs(Amax) Then Amax = ym(2, k1)
- Next
- Print Smax, Amax
- End Sub
- Private Sub cbStart_Click()
- cdCommonDialog.ShowOpen
- strFileName = cdCommonDialog.FileName
- nFreeFile = FreeFile
- If strFileName <> "" Then
- Open strFileName For Input As nFreeFile
- nFileLenght = FileLen(strFileName)
- strFileContent = Input(nFileLenght, #nFreeFile)
- txtFile.Text = strFileContent
- Close
- End If
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д