С целью структурирования программы, кроме ее главной части целесообразно выделить в отдельные функции следующие процедуры:
offset — определение количества дней, прошедших от 1.01.1900 г. до заданной даты (dd — день, mm — месяц, уу — год);
axis — построение осей для графика биоритмов с нанесением рисок по горизонтальной оси и числовых меток, упрощающих определение дня текущего месяца;
grafik — построение графика синусоиды с заданными периодом т и начальным смещением df 1, окрашенной в указанный цвет.
Совет 2 (общий)
Алгоритм процедуры offset может быть самым примитивным. Например, можно прибавлять к сумме по 365 дней за каждый полностью прошедший год и компенсировать добавочным днем каждый високосный. В начале работы в сумму заносим 365 — число дней в невисокосном 1900 году. В текущем году количество дней подсчитываем с помощью массива days, задающего количество дней в каждом месяце. Нужно только откорректировать число дней февраля (days [1] = 29), если текущий год является високосным.
Совет 3 (общий)
Для определения текущей даты можно воспользоваться одной из функций, предлагаемых соответствующей системой программирования — DATE$ (QBasic), getdate (Си), GetDate (Паскаль).
Совет 4 (QBasic)
Самым неудобным моментом в программе является подбор положения цифровых меток у графических штрихов на оси х. К сожалению, кроме метода проб и ошибок, мы не можем предложить ничего разумного. Дело в том, что оператор L0CATE позиционирует курсор в терминах строка-столбец, а графика оперирует с пикселами. Поэтому приходится слегка смещать либо положение рисунка, либо положение подписи.
Совет 5 (Си)
Для абсолютной идентичности результатов программ на Си и Паскале пришлось написать очень нехитрую функцию round, округляющую вещественный аргумент до ближайшего целого числа. К сожалению, воспользоваться напрямую одной из библиотечных функций floor или ceil нельзя.
Совет 6 (Паскаль)
0братите внимание на то, что в графическом режиме мы не пользуемся процедурами и функциями модуля Crt, ибо они конфликтуют с процедурами модуля Graph. В отличие от этого в Си, например, функция gotoxy прекрасно работает и в графическом режиме.