#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>

void dda();
int x1, x2, y1, y2;

int main(void)
{
   /* request auto detection */
   int gdriver = DETECT, gmode, errorcode;

   printf("Digite x1: ");
   scanf("%i",&x1);
   printf("Digite y1: ");
   scanf("%i",&y1);
   printf("Digite x2: ");
   scanf("%i",&x2);
   printf("Digite y2: ");
   scanf("%i",&y2);

   /* initialize graphics and local variables */
   initgraph(&gdriver, &gmode, "");

   dda();

   getch();
   closegraph();
   return 0;
}


void dda()
{
   int dx = x2 - x1;
   int dy = y2 - y1;
   int passo, k;
   double incr_x, incr_y, x, y;

   if (dx == 0)
      dx = 1;

   if (dy == 0)
      dy = 1;

   if (abs(dx) > abs(dy))
      passo = abs(dx);
   else
      passo = abs(dy);

   incr_x = dx / passo;
   incr_y = dx / passo;
   x = x1;
   y = y;
   putpixel(x,y,4);

   for (k=1; k<passo; k++)
   {
      x = x + incr_x;
      y = y + incr_y;
      putpixel(floor(x),floor(y),4);
   }
}
