// Copyright (c) 2008 Pedro Quaresma, Coimbra, Portugal // Versão 2.0 // versão 1.0, desenvolvida por Augusto Pinho // (sob supervisão de Pedro Quaresma) %{ int nhifens() { int i,nhfs=0; for (i=0;i1) { total_letras = total_letras+yyleng-nhifens(); totalPalavras++; } } .|\n %% int main(int argc, char *argv[]) { // interface linha de comando // media char *ficheiroEntrada,*ficheiroSaida; FILE *fsai, *fopen(); if (argc<=2) { // valores de entrada insuficientes (2+1) printf("\nUtilização: media nome_ficheiro_entrada nome_ficheiro_saída\n\n"); return; } // obtêm os argumentos da linha de comando ficheiroEntrada=argv[1]; ficheiroSaida=argv[2]; printf ("\nFicheiro a Processar: %s\nFicheiro com resultados: %s\n\n",ficheiroEntrada,ficheiroSaida); if ((yyin = fopen(ficheiroEntrada,"r")) == NULL) { printf("Não foi possível abrir o ficheiro %s\n",ficheiroEntrada); } else if ((fsai = fopen(ficheiroSaida,"w")) == NULL) { printf("Não foi possível abrir para escrita o ficheiro %s\n",ficheiroSaida); } else { // processar yylex(); fprintf(fsai,"\n\nResultados:\n\n"); fprintf(fsai,"Total de Letras: %0.0f \n", total_letras); fprintf(fsai,"Total de Palavras: %0.0f \n", totalPalavras); fprintf(fsai,"Comprimento Médio das Palavras: %0.6f\n\n", total_letras / totalPalavras); fclose(fsai); } }