int t, int dfi, int
#include <stdio.h>
#include <graphics.h>
#include <conio.h>
#define twopi 2*M_PI
void axis(void);
void grafik( int t, int dfi, int color);
long offset(int d, int m,int y);
int round(double x);
char days[]={30,28,31,30,31,30,31,31,30,31,30,31}; int a ;
main () {
int gd=0,gm, k,d,m, y,ml,yl;
struct date q;
long dd; wwod:
clrscr () ;
gotoxy(1,1);
printf("Биоритмы на текущий месяц\n");
printf("Введите день, месяц (числом) и год своего рождения\n");
scanf("%d %d %d",&d,&m,&y);
getdate(&q);
ml=q.da_mon;
yl=q.da_year;
if(m<l || m>12 || d<l || d>days[m-l] || y<1900 || y>yl)
{
printf("\nBы ошиблись. Нажмите Enter и повторите ввод");
getch();
goto wwod;
}
if(yl % 4 == 0) days[l]=29;
a=days[ml-1];
dd=offset(l,ml,yl)-offset(d,m,y);
initgraph(&gd, &gm, "");
gotoxy(1,1);
printf ("красный - физическое состояние");
gotoxy(1,2);
printf ("синий - эмоциональное состояние");
gotoxy(l,3);
printf ("зеленый - интеллектуальное состояние");
axis();
grafik(23,dd % 23,RED);
grafik(28,dd % 28,GREEN);
grafik(33,dd % 33,BLUE);
getch();
closegraph ();
}
/*---------------------------------*/
void axis(void)
{ /* Построение и маркировка осей */
int j,str; char qq[5];
line(0,140,0,340); /* вертикальная ось */
line(0,240,a*20,240);
/* горизонтальная ось */
/* цикл построения малых и больших штрихов на оси х */
for(j=l;j <= a;j++) {
str=5;
if(j % 5 == 0) str=10;
line(j*20,240+str,j*20,240-str);
if (str == 10)
{ /* маркировка больших штрихов через 5 дней */
itoa(j,qq,10);
outtextxy(j*20-5,240+20,qq);
}
}
} /*---------------------------*/
void grafik(int t,int dfi,int color)
/* построение синусоиды */
/* t - период (в днях) */
/* dfi - смещение для х=0 */
/* color - цвет графика */
/***************************/
{
int x,y,x1,y1,k; х=0;
y=round(240-100*sin(twopi*dfi/t));
Содержание Назад Вперед