Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить PM | Цитировать


С одной стороны, задачка конечно простая, но работать с вещественными числами нужно очень аккуратно. По возможности нужно избегать операций сравнения, и уж тем более не использовать такие выражения, как $X0 = $X0 + $DX, дабы не накапливать ошибку...

Код: Выделить весь код
$Xmin = 7.9
$Xmax = 8.66
$DX = 0.5

; Первое минимальное число, которое делится на DX
$X0 = (Floor(($Xmin + $DX) / $DX) - Not($Xmin - (Floor(($Xmin + $DX) / $DX) - 1) * $DX)) * $DX

; Количество искомых чисел в из промежутка от X0 до Xmax включительно
$NX = 1 + Floor(($Xmax - $X0) / $DX)

; X0, X0+DX, X0+2*DX, ... , X0+(NX-1)*DX
For $i = 1 To $NX
    ConsoleWrite($X0 + ($i - 1) * $DX & @CR)
Next
madmasles

Долго, потому что Sleep()... Он в основном нужен только для GUI, где необходимо обрабатывать события от пользователя. Использование в расчетах Sleep() - это просто преступление.


Последний раз редактировалось Yashied, 29-11-2010 в 02:36.

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:26, 29-11-2010 | #3