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



         

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


#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));




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