DECLARE FUNCTION CoordToN! (X&, Y&)
REM Вычисление номера узла по его координатам
INPUT "Введите координаты узла : ", X&, Y&
M& = CoordToN(X&, Y&)
PRINT "Его номер = "; M&
END
FUNCTION CoordToN (X&, Y&)
IF X& <= Y& THEN 'если узел в левой полуплоскости
IF X& >= 0 AND Y& > 0 THEN GOTO m12'случай 1
IF X& < 0 AND Y& >= 0 AND Y& >= ABS(X&) THEN 'случай 2
'обработка случаев 1 и 2
m12: x0 = -Y&: y0 = Y&: N& = (2 * x0) ^ 2'координаты и номер угла
CoordToN = N& + x0 - X&: EXIT FUNCTION
ELSE
' обработка случаев 3 и 4
x0 = X&: y0 = -X&: N& = (2 * x0) ^ 2
CoordToN = N& + y0 - Y&: EXIT FUNCTION
END IF
END IF
' если узел в правой полуплоскости
IF X& <= 0 AND Y& < 0 THEN GOTO mab' случай a
IF X& >= 0 AND Y& < 0 AND ABS(Y&) >= X& THEN ' случай b
' обработка случаев a,b
mab: x0 = -Y& + 1: y0 = -Y&: N& = (2 * x0 - 1) ^ 2
CoordToN = N& - x0 + X&: EXIT FUNCTION
ELSE
' обработка случаев c,d
x0 = X&: y0 = -X& + 1: N& = (2 * x0 - 1) ^ 2
CoordToN = N& + Y& - y0
END IF
END FUNCTION