/*programa de prova de fitxers*/

#include <stdio.h>
#include <graphics.h>
#include <conio.h>
#include <process.h>

typedef struct{
	int x;
	int y;
	}punt;

typedef struct{
	char nom[30];
	int color;
	int n_costats;
	punt punts [21];
	}figura;



/*#define EOF '0'*/

int install(void){
	FILE *ifitxer;

	if((ifitxer=fopen("x1.txt","w+"))==NULL)printf("\n\n\tError en l\'installacio.(Comproveu mem. ord.)");
	fputc(EOF,ifitxer);
	
	fclose(ifitxer);
	fflush(ifitxer);
	return(3);
	}



void guardarNova(void){
	int n;
	int color_aux, n_costats_aux, punts_aux[21];
	char final_aux, nom_aux[30];

	figura nova;

	FILE *ifitxer;
	FILE *ofitxer;

	if((ifitxer=fopen("x1.txt","r"))==NULL)printf("\n\n\tError en obrir l'arxiu d'origen. (Consell:Feu Install)");
	if((ofitxer=fopen("x1aux.txt","w"))==NULL)printf("\n\n\tError en obrir l'arxiu imatge.");
	
	printf("\n\n\tEntreu el nom de la nova figura:\n\t");
	scanf("%s",&nova.nom);
	printf("\n\n\tEntreu el color de la figura %s: 0 negre, 1 blau, 2 verd, 3 cian,\n\t",nova.nom);
	printf("4 vermell, 5 magenta, 6 marro, 7 gris clar, 8 gris fosc, 9 blau\n\t");
	printf("clar, 10 verd clar, 11 cian clar, 12 vermell clar, 13 magenta\n\t");
	printf("clar, 14 groc, 15 blanc.\n\t");
	scanf("%d",&nova.color);
	printf("\n\n\tEntreu el nombre de costats de la figura %s:\n\t",nova.nom);
	scanf("%d",&nova.n_costats);
	printf("\n\n\tEntreu els punts per parelles de coordenades de la figura %s:\n",nova.nom);
	for(n=0;n<nova.n_costats*2;n++)scanf("%d",&nova.punts[n]);
	
	fprintf(ofitxer,"%s %d %d ", nova.nom, nova.color, nova.n_costats);
	for(n=0;n<nova.n_costats*2;n++)fprintf(ofitxer,"%d ",nova.punts[n]);
	
	final_aux = fgetc(ifitxer);
	rewind(ifitxer);
	while(final_aux != EOF){
			fscanf(ifitxer,"%s %d %d ",&nom_aux,&color_aux,&n_costats_aux);
			for(n=0;n<n_costats_aux*2;n++)fscanf(ifitxer,"%d ",&punts_aux[n]);
			
			fprintf(ofitxer,"%s %d %d ",nom_aux,color_aux,n_costats_aux);
			for(n=0;n<n_costats_aux*2;n++)fprintf(ofitxer,"%d ",punts_aux[n]);
			final_aux = fgetc(ifitxer);
			fseek(ifitxer,-1,1);
		}
	fputc(EOF,ofitxer);
	
	fclose(ifitxer);
	fclose(ofitxer);
	fflush(ifitxer);
	fflush(ofitxer);
	}



void copiarArx(void){
	int n;
	int color_aux, n_costats_aux, punts_aux[21];
	char final_aux, nom_aux[30];

	FILE *ifitxer;
	FILE *ofitxer;

	if((ofitxer=fopen("x1aux.txt","r"))==NULL)printf("\n\n\tError en obrir l'arxiu imatge.");
	if((ifitxer=fopen("x1.txt","w"))==NULL)printf("\n\n\tError en obrir l'arxiu imatged'origen. (Consell:Feu Install)");

	final_aux = fgetc(ofitxer);
	rewind(ofitxer);
	while(final_aux != EOF){
			fscanf(ofitxer,"%s %d %d ",&nom_aux,&color_aux,&n_costats_aux);
			for(n=0;n<n_costats_aux*2;n++)fscanf(ofitxer,"%d ",&punts_aux[n]);
			
			fprintf(ifitxer,"%s %d %d ",nom_aux,color_aux,n_costats_aux);
			for(n=0;n<n_costats_aux*2;n++)fprintf(ifitxer,"%d ",punts_aux[n]);
			final_aux = fgetc(ofitxer);
			fseek(ofitxer,-1,1);
		}
	fputc(EOF,ifitxer);

	fclose(ifitxer);
	fclose(ofitxer);
	fflush(ifitxer);
	fflush(ofitxer);
	}



void inform(void){
	clrscr();
	printf("\n\n\n\n\tDurant el programa es creara una arxiu auxiliar degut al");
	printf("\n\tmoviment d\'estructures, si es necesari es pot esborrar a ma.");
		printf("\n\tAquest es troba al mateix directori que l'executable i");
	printf("\n\tel seu nom es: x2.txt");

	printf("\n\n\tPremeu una tecla per tornar al menu principal.\n\t");
	getch();
	}



atoi(char s[]){
	int i,n;
	for(i= 0,n=0;s[i] >= '0'&&s[i]<='9';++i)n=10*n + s[i] - '0';
	return(n);
	}



void main(void){

	char seleccio_usuari[30];
	int seleccio_enter;

	FILE *ifitxer;
	FILE *ofitxer;

	do{
		clrscr();
		printf("\n\n\n\n\t1.-Install(i/o esborrar base de dades).\n");
		printf("\t2.-Crear una nova figura.\n");
		printf("\t3.-Modificar una figura existent.\n");
		printf("\t4.-Eliminar una figura ja creada.\n");
		printf("\t5.-Consultar una figura.\n");
		printf("\t6.-Consultar totes les figures.\n");
		printf("\t7.-Visualitzar una figura.\n");
		printf("\t8.-Informacio.\n");
		printf("\t9.-Sortir.\n\n\t");
			
		scanf("%s",&seleccio_usuari);
		
/*Depurem seleccio_usuari i el passem a seleccio_enter, nomes enter*/
		seleccio_enter = atoi(seleccio_usuari);
	
/*Comença el switch*/	
		switch(seleccio_enter){
			case 1:
				if((3==install())){
					printf("\n\n\tOperacio duta a terme satisfactoriament.\n\tPremeu una tecla per continuar.");
					getch();}
				break;
			case 2:
				guardarNova();
				copiarArx();
				break;

			case 3:
				break;


			case 4:
				break; 
			
			case 5:
				break;

			case 6:
				break;

			case 7:
				break;

			case 8:
				inform();
				break;
			default:
				break;
		
		}
	}while(seleccio_enter!=9);
}

