#include <stdio.h>
#include <string.h>
#define MAX 15;
 
int aggiungiparole(void);
void presentazione(void);
void chiusura(int);
void ricercatraduzione(void);
 int continuare(void);
char word[15];
unsigned int aggiuntaparola=0U;

main()
{
 int static presentato=0;
 int static aggiunte=0;
 int risp;
 
 
 if (presentato==0)
 {
 presentazione();
 presentato=1;
 }

 printf("Parola:\n");
 scanf("%s",word);
 ricercatraduzione();
 risp = continuare();
 if (risp==0) 
  main(); 
 if (risp==2)
  {
  aggiunte+=aggiungiparole();
  main();
  }
 if (aggiuntaparola==1U)
 {
  chiusura(aggiunte);
  aggiuntaparola=3U;
 }
}


void ricercatraduzione()
{
 char zzzz[15]={'z','z','z','z'};
 char paroladopo[15];
  char traduzione[30];
  char a[15];
  char wordscan[15];
  char dopoparola;
  enum continua {
   si,
   no,
   nontrovata };
 enum continua continua;
 FILE *listaparole;
 listaparole = fopen("/home/lorenzo/italian.txt","r");
 fseek(listaparole,0L,SEEK_SET);
 do
  {
   fscanf(listaparole,"%s %s",wordscan,traduzione);
   if (strcmp(word,wordscan) == 0) 
       { 
        printf("Traduzione: %s",traduzione);
        do {
        dopoparola=getc(listaparole);
        if (dopoparola !='\n' ) {
         fscanf(listaparole," %s",traduzione);
         printf(" %s",traduzione);
	}
        }
        while(dopoparola !='\n');
        if (dopoparola == '\n') 
         printf("\n");
	fscanf(listaparole,"%s",paroladopo);
	if (strcmp(paroladopo,word)==0)
	  {
	  continua = si;
	  fseek(listaparole,-(long)(sizeof(paroladopo)),SEEK_CUR);
	  }
	else {
              continua = no ;
	}
        }
     else { 
         continua = si;}
     dopoparola=getc(listaparole);
     while (dopoparola != '\n')
       {
       fscanf(listaparole,"%s",a);
       dopoparola=getc(listaparole);
       if (feof(listaparole) != 0)
	 { 
          dopoparola='\n';
          continua=nontrovata;
         }
       }
   }
  while (continua == si);
  if (continua== nontrovata) 
    printf("Parola non trovata\n");
  fclose(listaparole);
}


int continuare ()

{
 int q;
 
 printf("\n");
 printf("(q) esci (a) aggiungi parole nuove (invio) continui\n");
 getchar();
 q=getchar();
 if (q==113){ 
   return(1);}
 else{ if(q!='a')
   return(0);
   else return(2);}
}

int aggiungiparole()
{
	char paring[30];
	char parita[70];
	char v;
	int static n=0;
	FILE *listaparole;
	
	aggiuntaparola=1U;
	printf("Dammi parola parola inglese\n");
	gets(paring);
	gets(paring);
	printf("Dammi traduzione in italiano\n");
	gets(parita);
        listaparole = fopen("/home/lorenzo/italian.txt","a");
        fprintf(listaparole,"%s %s\n",paring,parita);
		n++;
	printf("Devi aggiungerne ancora? (s/n)\n");
	v=getchar();
	if(v=='s') 
	  aggiungiparole();
	fclose(listaparole);
	return n;
}
	

void presentazione()
{
	printf("\n");
	printf("---------------------------------------\n");
	printf("                  DIZ                  \n");
	printf("               release 0.20            \n");
        printf("---------------------------------------\n");
	printf("\n");
}    

void chiusura(aggiunte)
{
	printf("\n\n");
	printf("Hai aggiunto %d parol%c\n",aggiunte,(aggiunte==1)?'a':'e');
	printf("\n");
	printf("---------------------------------------\n");
	printf("  Ricorda di spedirmi le nuove parole  \n");
	printf("         che hai aggiunto a:           \n");
	printf("        ilsaggio@SoftHome.net          \n");
	printf("---------------------------------------\n");
	printf("\n");
	getchar();
	getchar();
}
