Залить фигуру разными цветами и вычислить площадь - 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);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы