#include	<stdlib.h>
#include	<stdio.h>
#include	<math.h>


#define	FUERA	0
#define	DENTRO	1
#define	POLIGONOS_TEST_MAX	4
#define	PUNTOS_TEST_MAX		5
#define	LINEAS_POR_POLIGONO	12


typedef struct{
	float X;
	float Y;
}Punto;

typedef struct{
	Punto P0, P1;
}Linea;

typedef struct{
	char nombre[5];
	int size;
	Linea lineas[LINEAS_POR_POLIGONO];
}Poligono;

const Poligono poligonos_test[POLIGONOS_TEST_MAX] = {
			{"Tria", 3, {
					{{0,0},{3,7}}, {{3,7},{6,0}}, {{6,0},{0,0}}, {{0,0},{0,0}},
					{{0,0},{0,0}}, {{0,0},{0,0}}, {{0,0},{0,0}}, {{0,0},{0,0}},
					{{0,0},{0,0}}, {{0,0},{0,0}}, {{0,0},{0,0}}, {{0,0},{0,0}}
				}
			},
			{"Rect", 4, {
					{{0,0},{0,7}}, {{0,7},{7,7}}, {{7,7},{7,0}}, {{7,0},{0,0}},
					{{0,0},{0,0}}, {{0,0},{0,0}}, {{0,0},{0,0}}, {{0,0},{0,0}},
					{{0,0},{0,0}}, {{0,0},{0,0}}, {{0,0},{0,0}}, {{0,0},{0,0}}
				}
			},
			{"Letr", 12, {
					{{0,0},{0,7}}, {{0,7},{1,7}}, {{1,7},{3,5}}, {{3,5},{5,7}},
					{{5,7},{6,7}}, {{6,7},{6,0}}, {{6,0},{5,0}}, {{5,0},{5,5}},
					{{5,5},{3,3}}, {{3,3},{1,5}}, {{1,5},{1,0}}, {{1,0},{0,0}}
				}
			},
			{"Cora", 12, {
					{{0,3},{0,5}}, {{0,5},{1,6}}, {{1,6},{2,6}}, {{2,6},{4,4}},
					{{4,4},{3,3}}, {{3,3},{2,4}}, {{2,4},{4,6}}, {{4,6},{5,6}},
					{{5,6},{6,5}}, {{6,5},{6,3}}, {{6,3},{3,0}}, {{3,0},{0,3}}
				}
			}
	};

const Punto puntos_test[PUNTOS_TEST_MAX] = {
		{0,0}, {3,4}, {2,6}, {3,6}, {4,6}
};

int algoritmo( const Poligono plgn, const Punto pnt ){
	int resultado = 0;

	//	Implementacion del algoritmo. Resultado = DENTRO/FUERA

	return resultado;
}

int main(){

	int i, j;

	printf("www.TODOPIC.com.ar\n");
	printf("Concurso de programacion en C.\n");
	printf("Nombre del concursante: XXXX");

	for( i = 0 ; i < POLIGONOS_TEST_MAX ; i++ ){

		printf( "\n\nTest del poligono %s...", poligonos_test[i].nombre );

		for( j = 0 ; j < PUNTOS_TEST_MAX ; j++ ){

			if( DENTRO == algoritmo( poligonos_test[i], puntos_test[j] ) )
				printf( "\nEl punto { %2.1f, %2.1f } se encuentra DENTRO", puntos_test[j].X,puntos_test[j].Y );
			else
				printf( "\nEl punto { %2.1f, %2.1f } se encuentra FUERA", puntos_test[j].X,puntos_test[j].Y );

		}
	}

	printf("\n\nTest terminado.");
	return 0;
}
