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

/* Hoekpunten wordt gedefinieerd als een array type met 3 elementen.
   Elk element is een struct met een x en een y waarde. */

typedef struct {
  	int x;
   int y;
} Hoekpunten[3];

int main() {
	Hoekpunten driehoek;
   void invoerDriehoek(Hoekpunten h);
   double omtrekDriehoek(Hoekpunten h);

   invoerDriehoek(driehoek);
   printf("De omtrek van de ingevoerde driehoek is: %.2lf", omtrekDriehoek(driehoek));

   fflush(stdin);
	getchar();
	return 0;
}

void invoerDriehoek(Hoekpunten h) {
   int i, j, orgineel;
   i=0;
	while (i<3) {
      printf("Geef de x coordinaat van punt %d: ", i);
      while (scanf("%d", &h[i].x)!=1) {
	    	printf("Je moet een getal invoeren!\n");
         fflush(stdin);
      }
      printf("Geef de y coordinaat van punt %d: ", i);
      while (scanf("%d", &h[i].y)!=1) {
	    	printf("Je moet een getal invoeren!\n");
         fflush(stdin);
      }
		orgineel=1;
      for (j=0; j<i; ++j) {
      	if (h[j].x==h[i].x && h[j].y==h[i].y) {
         	orgineel=0;
         }
      }
		if (orgineel==1) {
         ++i;
      }
      else {
      	printf("Dit punt is al ingevoerd. Je moet 3 orginele punten invoeren!\n");
      }
   }
}

double omtrekDriehoek(Hoekpunten h) {
  	return sqrt(pow(h[0].x-h[1].x, 2.0)+pow(h[0].y-h[1].y, 2.0))+
			 sqrt(pow(h[1].x-h[2].x, 2.0)+pow(h[1].y-h[2].y, 2.0))+
   		 sqrt(pow(h[2].x-h[0].x, 2.0)+pow(h[2].y-h[0].y, 2.0));
}
