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


         

REM Построение биоритмов на текущий


Программа 8_18.bas

DECLARE SUB AXIS()

DECLARE SUB GRAFIK(t!,dfi!,col!)

DECLARE FUNCTI0N 0FFSET!(d!,m!,у!)

REM Построение биоритмов на текущий месяц

DATA 30,28,31,30,31,30,31,31,30,31,30,31

DIM SHARED days(11),a

F0R k=0 T0 11: READ days(k): NEXT k

wwod:

PRINT "Биоритмы на текущий месяц"

PRINT "Введите день, месяц (числом) и год своего рождения"

INPUT d,m,у

d$=DATE$: ml=VAL(LEFT$(d$,2)) : dl=VAL(MID$(d$, 4, 2))

yl=VAL(RIGHT$(d$, 4))

IF (m<l)0R(m>12)0R(d<l)0R(d>days(m))0R(y<1900)0R(y>yl) THEN

PRINT "Вы ошиблись. Повторите ввод"

SLEEP 1: G0T0 wwod END IF

IF (y1 M0D 4)=0 THEN days(2)=29:' поправка на високосный год
a=days(ml):' число дней в текущем месяце
' Интервал от дня рождения до начала текущего месяца
dd=0FFSET(l,ml,yl)-0FFSET(d,m,у) SCREEN 12

PRINT "красный - физическое состояние"
PRINT "синий - эмоциональное состояние"
PRINT "зеленый - интеллектуальное состояние"
' Построение и разметка координатных осей

axis

GRAFIK 23,dd
M0D 23,4
GRAFIK 28,dd
M0D 28,2
GRAFIK 33,dd
M0D 33,1
SLEEP END

SUB AXIS

LINE (0,140)-(0,340)

LINE (0,240)-(a*20,240)

F0R j=l T0 a stroke=5

IF (j M0D 5)=0 THEN stroke=10
LINE (j*20,240+stroke)-(j*20,240-stroke)
IF stroke=10 THEN L0CATE 17,(j*20-4)\8: PRINT j

NEXT j
END SUB

SUB GRAFIK(t,dfi, col)
C0NST twopi=6.2831853*

x=0: y=240-100*SIN(twopi*dfi/t): C0L0R col PSET (x,y)
F0R k=l T0 a xl=20*k

yl=240-100*SIN(twopi*(k+dfi)/t)
LINE -(xl,yl)
NEXT k
END SUB

FUNCTI0N 0FFSET (d,m,y)

REM Вычисляет количество дней от 1.01.1900 до
d.m.y dd=365: 'Количество дней в 1900 г REM Цикл учета полных лет
F0R k%=1901 T0 у-1 dd=dd+365

REM Поправка на високосный год
IF (k% M0D 4)=0 THEN dd=dd+l NEXT k%
REM Учет дней в году у до месяца m

F0R k%=l T0 m-1: dd=dd+days(k%): NEXT k%
0FFSET=dd+d:' Добавление дней, прошедших в месяце m
END FUNCTI0N

Программа 8_18.с

#include <dos.h>
#include <math.h>

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