/*
TITOLO: COUNT - Conteggio di caratteri, parole e righe
DESCRIZIONE: Il programma riceve un testo digitato direttamente
da tastiera e conta i caratteri presenti in esso. In più conta
anche righe e parole presenti.

DATA di CRAEZIONE: 17 Novembre 2008
AUTORI: Farinelli Agnese e Hamze Ahmad

ULTIMA MODIFICA: 5 Dicembre 2008
*/

#include <stdio.h>
#define IN 1
#define OUT 0

main()
{
      int c,nl,nw,nc,ns,nn,stato;
             
      stato=IN;
      nc=nw=nn=ns=0;  
      nl=1;

      //Richiesta di inserimento del testo da analizzare
      printf("\n");
      printf("******************* COUNT *******************\n");
      printf("Inserisci il testo da analizzare (per terminare digita '.'):\n\n");
      printf("--> ");
     
      
      while((c=getchar())!='.'){  //Analisi e conteggio dei caratteri presenti nel testo
	++nc;
	if(c=='\n'){  //Analisi dei caratteri: se il carattere individuato è un A CAPO, conta 1 riga
	  ++nl;
	}
	if(c==' '||c=='\n'||c=='\t'){  //Analisi dei caratteri: ad ongi SPAZIO, A CAPO o TABULAZIONE lo stato
	  stato=IN;                    //cambia in IN, allora ho trovato una parola
	}
	if(c==' '){ //Analisi dei caratteri: ad ogni SPAZIO, conto 1 spazio
	++ns;
	}
	else if (stato==IN){  //Analisi dello stato: se è IN conto 1 parola, poi lo cambio in OUT
           ++nw;
	   stato=OUT;           
           }
      }

      nn=nc-ns;

      //Stampo i risultati ottenuti
      printf("\n*********************************************\n");
      printf("Numero righe: %d\n",nl);
      printf("Numero parole: %d\n",nw);
      printf("Numero degli spazi: %d\n",ns);
      printf("Numero caratteri (comprensivo dei spazi): %d\n",nc+1);
      printf("Numero caratteri: %d\n",nn+1);
      printf("\n*********************************************\n\n");
           
}
      
