Практика программирования (Бейсик, Си, Паскаль)


Задачи,советы и ответы - часть 56


Таблица 2.1. Закономерность между номером диагонали, ее уравнением

и координатами начальной и конечной точек

Номер Номера начальной диагонали и конечной точек

Координаты начальной и конечной точек

nDiag

nBeg

nEnd

(хВеg, уВеg)

(xEnd, yEnd)

0

0

0

(0,0)

(0,0)

1

1

2

(1,0)

(0,1)

2

3

5

(0,2)

(2,0)

3

6

9

(3,0)

(0,3)

4

10

14

(0,4)

(4,0)

5

15

20

(5,0)

(0,5)

6

21

27

(0,6)

(6,0)

7

28

35

(7,0)

(0,7)

8

36

44

(0,8)

(8,0)

9

45

54

(9,0)

(0,9)

10

55

65

(0,10)

(10,0)

По содержимому табл. 2.1 можно установить следующие факты:

nEnd = nBeg + nDiag nBeg(nDiag-t-l) = nEnd(nDiag) + 1

Если nDiag -- четное, то координаты начальной точки — (0, nDiag) и при перемещении по диагонали х уменьшается, а у возрастает. В противном случае начальная точка имеет координаты (noiag, 0) и при перемещении по диагонали х возрастает, а у уменьшается.

Ниже приводятся тексты программ, определяющие номера смежных точек для точки с заданным номером. Для уменьшения количества передаваемых параметров характеристики диагонали вынесены в глобальные переменные.

Массивы dx и dy предназначены для определения координат смежных точек, количество которых может варьироваться от трех (для точки с номером 0) или пяти (для начальной и конечной точек диагонали) до восьми (в случае внутренних точек). Анализ того, какая из восьми возможных точек является допустимой, вынесен в процедуру nextpoint. Она проверяет принадлежность точки первому квадранту, восстанавливает по координатам порядковый номер допустимой точки и выводит его на экран.

Программа 2_31.bas

DECLARE SUB NEXTPOINT (X&, Y&)

DIM nDiag AS LONG 'номер диагонали

DIM xBeg AS LONG, yBeg AS LONG 'начальная точка на диагонали

DIM nPoints AS LONG 'количество точек на диагонали

DIM nBeg AS LONG 'номер начальной точки на диагонали




- Начало -  - Назад -  - Вперед -