Sub Alg_1() xN = -5: xK = 5: h = 0.1 x = xN: i = 1 Do While x <= xK y = 3 * x ^ 2 - 6 * x + 5 Cells(i, 1) = x: Cells(i, 2) = y x = x + h: i = i + 1 Loop End Sub
Во вложении файл с рабочей книгой MS Excel 2003. Макрос на листе 1.
Теперь о Вашей ошибке
Dim xN, xK, x As Integer Dim y, h As Single xN = -5 ... h = 0.1 x = xN ... x = x + h
Такое описание означает, что xN, xK будут типа Variant, х - типа Integer. y тоже будет типа Variant, h - типа Single. При выполнении опeратора x=x+h целочисленное x сначала увеличится на 0.1, а затем дробная часть будет отброшена. Поэтому х постоянно будет равен xN и цикл станет бесконечным.
j = 5
A[j]<A[j-1] ⇒ A[5]<A[4] ⇒ 3<9 ⇒ true (истина)
⇒ t = A[5] = 3; A[5] = A[4] = 9; A[4] = 3; j = j-1 = 5-1 = 4
массив: 1, 2, 5, 8, 3, 9, 4, 0, 7, 6
A[j]<A[j-1] ⇒ A[4]<A[3] ⇒ 3<8 ⇒ true (истина)
⇒ t = A[4] = 3; A[4] = A[3] = 8; A[3] = 3; j = j-1 = 4-1 = 3
массив: 1, 2, 5, 3, 8, 9, 4, 0, 7, 6
A[j]<A[j-1] ⇒ A[3]<A[2] ⇒ 3<5 ⇒ true (истина)
⇒ t = A[3] = 3; A[3] = A[2] = 5; A[2] = 3; j = j-1 = 3-1 = 2
массив: 1, 2, 3, 5, 8, 9, 4, 0, 7, 6
A[j]<A[j-1] ⇒ A[2]<A[1] ⇒ 3<2 ⇒ false (ложь)
ответ: j=2
xN = -5: xK = 5: h = 0.1
x = xN: i = 1
Do While x <= xK
y = 3 * x ^ 2 - 6 * x + 5
Cells(i, 1) = x: Cells(i, 2) = y
x = x + h: i = i + 1
Loop
End Sub
Во вложении файл с рабочей книгой MS Excel 2003. Макрос на листе 1.
Теперь о Вашей ошибке
Dim xN, xK, x As Integer
Dim y, h As Single
xN = -5
...
h = 0.1
x = xN
...
x = x + h
Такое описание означает, что xN, xK будут типа Variant, х - типа Integer.
y тоже будет типа Variant, h - типа Single.
При выполнении опeратора x=x+h целочисленное x сначала увеличится на 0.1, а затем дробная часть будет отброшена. Поэтому х постоянно будет равен xN и цикл станет бесконечным.