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 и цикл станет бесконечным.
У вас есть число 137 если вам надо перевести его в какую-нибудь систему счисления, то нужно делить это число на номер системы, так если нужно перевести число 137 в ДВОичную ,то делим на 2 до тех пор, пока остатотк от деления не равен 1.(если в ТРОичную то на 3 и т.д.). начнём: 137 / 2 = 68 выписываем остаток (1) 68 / 2 = 34 выписываем остаток (0) 34 / 2 = 17 выписываем остаток (0) 17 / 2 = 8 выписываем остаток (1) 8 / 2 = 4 выписываем остаток (0) 4 / 2 = 2 выписываем остаток (0) 2 / 2 = 1 <== на этой единице заканчиваем деление, далее снизу вверх выписываем получившееся число : 001001; ответ: 001001
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 и цикл станет бесконечным.
если вам надо перевести его в какую-нибудь систему счисления, то нужно делить это число на номер системы, так если нужно перевести число 137 в ДВОичную ,то делим на 2 до тех пор, пока остатотк от деления не равен 1.(если в ТРОичную то на 3 и т.д.).
начнём:
137 / 2 = 68 выписываем остаток (1)
68 / 2 = 34 выписываем остаток (0)
34 / 2 = 17 выписываем остаток (0)
17 / 2 = 8 выписываем остаток (1)
8 / 2 = 4 выписываем остаток (0)
4 / 2 = 2 выписываем остаток (0)
2 / 2 = 1 <== на этой единице заканчиваем деление, далее снизу вверх выписываем получившееся число : 001001;
ответ: 001001