Залить фигуру разными цветами и вычислить площадь - C (СИ)
Формулировка задачи:
Здесь нарисована фигура!!Как ее залить разными цветами и вычислить площадь подскажите пожалуйста!!!
#include <conio.h>
#include <process.h>
#include <graphics.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void zaliv (int, int);
int main ()
{
int i;
int gd = DETECT, gm, erc, x, y, col;
double s1, s2, s3;
char *color[] = {"black", "blue", "green", "cyan", "red",
"magneta", "brown", "lightgrey", "darkgrey",
"lightblue", "lightgreen", "lightcyan",
"lightred", "lightmagneta", "yellow", "white"};
char buffer[240];
clrscr ();
randomize ();
initgraph (&gd, &gm, "c:\\bc31\\bgi");
erc = graphresult ();
if (erc != grOk)
{
printf ("ѓа дЁзҐбЄ п ®иЁЎЄ : %s\n", grapherrormsg (erc));
printf ("Ќ ¦¬ЁвҐ Є« ўЁиг ¤«п ўл室 ...");
getch ();
exit (1);
}
rectangle(120,160,160,320);
rectangle(320,200,280,320);
line(240,200,360,200);
line(240,180,240,200);
line(240,180,260,160);
line(260,160,340,160);
line(340,160,360,180);
line(360,180,360,200);
arc(520,240,90,270,80);
arc(520,240,90,270,40);
line(520,160,520,200);
line(520,280,520,320);
getch ();
closegraph ();
return 0;
}
??????
помогите
кто знает??????????????????7
кто знает??????????????????7
Решение задачи: «Залить фигуру разными цветами и вычислить площадь»
textual
Листинг программы
#include <conio.h>
#include <graphics.h>
#include <stdio.h>
#include <stdlib.h>
void fill (int, int, int);
int main ()
{
clrscr ();
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
rectangle(120,160,160,320);
rectangle(320,200,280,320);
line(240,200,360,200);
line(240,180,240,200);
line(240,180,260,160);
line(260,160,340,160);
line(340,160,360,180);
line(360,180,360,200);
arc(520,240,90,270,80);
arc(520,240,90,270,40);
line(520,160,520,200);
line(520,280,520,320);
fill(150, 240, GREEN);
fill(309, 250, MAGENTA);
fill(309, 190, BLUE);
fill(518, 190, YELLOW);
getch ();
closegraph ();
return 0;
}
void fill(int xf, int yf, int color)
{
int l, xr, xl, x, back;
setfillstyle(SOLID_FILL, color);
back = getpixel(xf,yf);
if (back == color) return;
xr = xf;
xl = xf;
l = 1;
while(l != 0)
{
if((getpixel(xl - 1, yf) != back)) l = 0; else l = 1;
xl--;
}
xl++;
l = 1;
while(l!=0)
{
if ((getpixel(xr + 1, yf) != back)) l = 0; else l = 1;
xr++;
}
xr--;
bar(xl, yf, xr, yf);
for(x = xl; x <= xr; x++)
if ((getpixel(x, yf - 1) == back)) fill(x, yf - 1, color);
for(x = xl; x <= xr; x++)
if ((getpixel(x, yf + 1) == back)) fill(x, yf + 1, color);
}