PLE:Unidad7Ejercicio05

/* Programa:        Unidad7Ejercicio05.cpp Fecha:           08/02/2007 Descripción:     Contar la frecuencia de aparición de caracteres en un fichero de texto.
 * 1) include
 * 2) include
 * 3) include
 * 4) include
 * 1) include

using namespace std;

struct elemento {       char car; unsigned int cont; };

void inserta(elemento f[], unsigned int &n, char c); void muestra(elemento f[], unsigned int n); void incrementa(elemento f[], unsigned int n); int busca(elemento f[], unsigned int n, char c);

const int NUM=80;

void main {       char nomFicTex[NUM],c; elemento frec[NUM]; unsigned int numElem = 0; int p;

ifstream fe;

cout << "Introduzca el nombre del fichero a leer "; cin >> nomFicTex;

fe.open(nomFicTex); if(!fe.good) {               cout << "ERROR. Problema al acceder al fichero " << nomFicTex; exit(0); }

fe.get(c); while(!fe.eof) {               // Buscamos el caracter if(isalpha(c)) {                       c = tolower(c); p = busca(frec, numElem, c); if(p == -1) inserta(frec, numElem, c); else incrementa(frec, p); }

fe.get(c); }       fe.close;

muestra(frec, numElem);

cin.ignore; cin.get; }

void inserta(elemento f[], unsigned int &n, char c) { f[n].car = c;       f[n].cont = 1; n++; }

void muestra(elemento f[], unsigned int n) { cout << "Car.\tNum\n"; for(unsigned int i = 0; i < n; i++) cout << f[i].car << '\t' << f[i].cont << endl; }

int busca(elemento f[], unsigned int n, char c) { int pos = -1, i = 0; while(i < n && pos == -1) {               if(f[i].car == c)                        pos = i;                i++; }       return pos; }

void incrementa(elemento f[], unsigned int n) { f[n].cont++; }