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


аренда автокрана в саратове | Смотрите www.smt-kids.ru кидс клиник. |

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


Обратим внимание на то, что диагональ у=х делит узлы нашей решетки на два множества. Для всех узлов, расположенных слева от диагонали, выполняется условие х > у. Пусть точка с координатами (х,у) расположена либо на горизонтальном витке спирали, находящемся в левой полуплоскости, либо на вертикальном витке, спускающемся до диагонали. Разобьем каждый из этих витков на две части и пронумеруем их следующим образом:

  • 1 — горизонтальный участок от диагонали до оси у;

  • 2 — горизонтальный участок от оси у до угла поворота;

  • 3 — вертикальный участок от угла поворота до оси х;

  • 4 — вертикальный участок от оси х до очередного поворота.

    На каждом из этих участков справедливы следующие соотношения:

    1 : х > 0, у > 0

    2 : х < 0, у > 0, у > |х|

    3 : х < 0, у > 0, у < |х|

    4 : х < 0, у < 0

    Определив принадлежность точки тому или иному участку, мы можем вычислить координаты левого верхнего угла поворота (х0,у0) и найти порядковый номер этого узла N =(2*х0)2. Далее, в зависимости от номера участка, уже не сложно найти номер точки с координатами (х, у).

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

    Ниже приводятся тексты программ, демонстрирующие работу процедуры

    coord_to_n.

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

    DECiARF, FUNCTION CoordToN! (Х&, Y&)

    REM Вычисление номера узла по его координатам

    INPUT "Введите координаты узла : ", Х&, Y&

    М& = CoordToN(X&, Y&)

    PRINT "Его номер = "; М&

    END

    FUNCTION CoordToN (XS, Y&)

    IF X& <= Y& THEN 'если узел в левой полуплоскости

    IF Х& >= 0 AND Y& > 0 THEN GOTO m12 'случай 1

    IF Х& < 0 AND Y& >= 0 AND Y& >= ABS(X&) THEN 'случай 2




    Содержание  Назад  Вперед