#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
void draw_circle(int,int,int);
void draw_piechart();
int main(void)
{
int midx, midy, r;
midx = 320;
midy = 240;
clrscr();
draw_piechart(r);
getch();
closegraph();
return 0;
}
void draw_circle(int radius, int midx, int midy)
{
int x,y,pk;
x=0;
y=radius;
pk=1-radius;
while(x<=y)
{
// For all quadrants
putpixel((midx+x),(midy-y),15);
putpixel((midx+x),(midy+y),15);
putpixel((midx-x),(midy-y),15);
putpixel((midx-x),(midy+y),15);
putpixel((midx-y),(midy+x),15);
putpixel((midx-y),(midy-x),15);
putpixel((midx+y),(midy+x),15);
putpixel((midx+y),(midy-x),15);
if (pk<0)
{
pk=pk+(2*x)+1;
}
else
{
pk=pk+(2*x)+1-(2*y);
y-=1;
}
x+=1;
}
}
void draw_piechart()
{
int data,i,length,left=100,cnt=0,angle[5],x1,y1,x2,y2,no,midx,midy,r=90,y,newx1,newx2,newy1,newy2,diffx,diffy;
int gdriver = DETECT, gmode, errorcode;
for(i=0;i<5;i++)
{
if(left>0)
{
printf("\n Enter data for %d part from %d %: ",i+1,left);
scanf("%d",&data);
left-=data;
angle[i]=((360*data)/100);
cnt++;
}
}
midx=320;
midy=240;
initgraph(&gdriver, &gmode, "c:\\tc\\BGI");
// To draw a circle
draw_circle(r,midx,midy);
x1=320;
y1=240;
x2=320;
y2=240;
i=0;
line(x1,y1,x2,y2-r);
newx1=x2;
newy1=y2-r;
// Radius = 90
no=angle[i];
while(cnt>1)
{
if(no<=180)
{
y=(r)-no;
length=sqrt(pow(r,2)-pow(y,2));
x2=midx+length;
y2=(midy-r)+no;
}
else
{
y=(r*3)-no;
length=sqrt(pow(r,2)-pow(y,2));
x2=midx-length;
y2=(240+r)-(no-180);
}
cnt--;
line(x1,y1,x2,y2);
i++;
no+=angle[i];
}
}
Comments
Post a Comment