==============
#include <graphics.h>
#include <iostream.h>
//Окружность по алгоритму Брезенхайма
void Circle(int x, int y, int r,unsigned char color)
{
int x1,y1,yk = 0;
int sigma,delta,f;
x1 = 0;
y1 = r;
delta = 2*(1–r);
do
{
putpixel(x+x1,y+y1,color);
putpixel(x–x1,y+y1,color);
putpixel(x+x1,y–y1,color);
putpixel(x–x1,y–y1,color);
f = 0;
if (y1 < yk)
break;
if (delta < 0)
{
sigma = 2*(delta+y1)-1;
if (sigma <= 0)
{
x1++;
delta += 2*x1+1;
f = 1;
}
}
else
if (delta > 0)
{
sigma = 2*(delta–x1)-1;
if (sigma > 0)
{
y1–;
delta += 1–2*y1;
f = 1;
}
}
if (!f)
{
x1++;
y1–;
delta += 2*(x1–y1–1);
}
}
while(1);
}
void main()
{
int R=100; //Задаем радиус
double x;
double y;
int gdriver=DETECT,gm;
initgraph(&gdriver,&gm,“”);
x=getmaxx()/2;
y=getmaxy()/2;
Circle(x,y,R,1);
cin.get();
}
==============
Самую нужную часть хорошо комментировать я не смогу. Но кое что поясню. В отличии от встроенной функции, описываемая здесь называется по другому. Различны регистры букв. К регистру стоит быть всегда внимательным. Кроме этого, тут проявился некоторый эффект, который немного противоречит правилам хорошего тона программирования. Я заранее знаю какие значения должен принимать центр окружности и, размышляя логически, могу инициализировать x,y сразу в момент объявления, но при попытке такой инициализации и дальнейшей работы, у меня программа срабатывала не так как я того ожидал. Во время инициализации графического режима эти x,y меняли свое значение и вся инициализация во время объявления теряла смысл.Поэтому присваивание им значений я выполнил непосредственно перед вызовом функции. Это слегка забавно, но это стоит расценивать только как: “Будьте внимательны”.