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



         

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


Программа 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>




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