Ejercicio Programacion
Ejercicio Programacion
Ejercicio Programacion
#include <iostream>
#include <array>
#define MAX 35 //tamaño máximo de palabra
using namespace std;
int main()
{
unsigned npal=0, nlin=1;
string palabra_mayor;
Tfrecuencias frecuencias= {{0}};
procesar_texto(frecuencias, npal,nlin,palabra_mayor);
mostrar_estadisticas(frecuencias, npal,nlin,palabra_mayor);
return 0;
}
bool es_letra(char c)
{
return (c>='A' && c<='Z') || (c>='a' && c<='z');
}
bool es_digito(char c)
{
return (c>='0' && c<='9');
}
void procesar_texto(Tfrecuencias &frecuencias, unsigned &npal, unsigned &nlin,
string &palabra_mayor)
{
unsigned cont_letras=0, mayor=0;
char letra;
string palabra;
palabra.clear(); //inicialmente la variable no contiene ninguna palabra
cout << "\nIntroduce un texto terminado en punto: ";
cin >> noskipws; //para que no salte los separadores
cin >> letra;
while(letra!='.')
{
if (es_letra(letra)||es_digito(letra))
{
cont_letras++; //vamos contando letras
palabra+=letra; //vamos formando la palabra
}
else //es un separador
{
frecuencias[0]++; //se contabilizan los separadores en la
//posicion cero del array frecuencias
if (cont_letras !=0) //si hay una palabra
{
npal++;
frecuencias[cont_letras]++;//se actualizan las frecuencias
if(cont_letras>mayor) //si la palabra actual es de
{ //mas longitud que la que se tiene como mayor
mayor=cont_letras; //se cambia el mayor
palabra_mayor=palabra; //y la palabra
}
cont_letras = 0;
palabra.clear(); //se limpia la palabra para poder
} //formar una nueva
if(letra=='\n')
nlin++; //se contabilizan las lineas
}
cin >> letra;
}