3.Bresenham's Line Drawing Algorithm

#include<stdio.h> 
#include<math.h> 
#include<conio.h> 
#include<graphics.h> 

void main() {
   int x1, x2, y1, y2;
   int gd = DETECT, gm;
   void linebres(int, int, int, int);
   printf("Enter the two end points:");
   scanf("%d%d%d%d", &x1, &x2, &y1, &y2);
   initgraph(&gd, &gm, "");
   cleardevice();
   linebres(x1, y1, x2, y2);
   getch();
   line(x1, y1, x2, y2);
   getch();
   closegraph();
}

void linebres(int x1, int y1, int x2, int y2) {
   int dx = abs(x1 - x2), dy = abs(y1 - y2);
   int p, x, y, i, xend, yend;
   if (dx != 0) {
      p = 2 * dy - dx;
      if (x1 > x2) {
         x = x2;
         y = y2;
         xend = x1;
      }
      else {
         x = x1;
         y = y1;
         xend = x2;
      }
      putpixel(x, y, 2);
      for (i = x; i < xend; i++) {
         x += 1;
         if (p < 0)
            p += 2 * dy;
         else
            p += 2 * (dy - dx);
      }
      putpixel(x, y, 2);
   }
   else {
      p = 2 * dx - dy;
      if (y1 > y2) {
         x = x2;
         y = y2;
         yend = y2;
      }
      putpixel(x, y, 2);
      for (i = y; i < yend; i++) {
         y += 1;
         if (p < 0)
            p += 2 * dx;
         else {
            x += 1;
            p += 2 * (dx - dy);
         }
         putpixel(x, y, 2);
      }
   }
}