tp 5 ejercicio 6

tp 5 ejercicio 6

de RAMOS SANCHEZ, Maria Lourdes -
Número de respuestas: 1

Buenos dias. No entiendo que puede estar fallando. El resultado se muestra igual pero capaz hay alguna prueba oculta que no estoy pudiendo ver.

consigna:

Teniendo en cuenta las funciones de los puntos anteriores y considere ya implementada una función con el siguiente perfil: ingresar_frases(char frases[N][M], int longitud_frase[N], int cant_frases) que solicita al usuario ingrese cant_frases caracter a caracter y los almacena en la matriz frases, a su vez almacena en longitud_frases la cantidad de caracteres de cada frase. NO ES NECESARIO DEFINIR ESTA FUNCIÓN.


Escriba el cuerpo de una función main que cumpla con las siguientes consignas:

Asuma que las constantes N = 6 M = 20 están definidas de manera global.

1) Declare las siguientes variables:

  • Una matriz de tipo char llamada frases de N filas x M columnas 
  • Un arreglo de tipo int llamado long_frases de N posiciones.  
  • Una variable entera llamada numero_frases
A continuación solicite al usuario que ingrese un número entero en el rango [1, N] y almacénelo en numero_frases. Si el usuario ingrese un valor fuera del rango debe volver a solicitarlo. Antes de solicitar el valor imprima el mensaje: "Ingrese el numero de frases a cargar". Además, si el usuario ingresa un valor inválido imprima: "Debe ser >= 1 y menor o igual a N" y vuelva a solicitarlo.  (5 puntos)


2)  Invoque a la función ingresar_frases pasando como parámetros al matriz frase, el arreglo long_frases y el entero número de frases. A continuación, invoque a la función mostrar_frase para mostrar las frases ingresadas.  (5 puntos)

3) Invoque a la función pasar_a_minusculas_y_espacios para modificar a la matriz frases. A continuación, imprima la matriz llamando a la función mostrar_frase. (5 puntos)

4) Declare una variable entera num_letras y cuente en ella la cantidad total de letras que aparecen en las frases ingresadas por el usuario. Para ello invoque a la función contar_letras. Recuerde que la función contar_letras cuenta las letras de una frase (a saber de una fila de la matriz). Considere, invocarla para cada una de las filas de la matriz frases. Una vez calculado el valor, escriba el mensaje "Hay un total de : num_letras letras". (10 puntos)

5) Para cada vocal v ε {'a','e','i','o','u'}, calcule la expresión FrecuenciaVocal = \frac{numero\_de\_ocurrencias\_de\_v}{num\_letras}. Dónde numero_de_ocurrencias_de_v debe obtenerse invocando a la función contar_ocurrencias (considere invocarla para cada frase) y num_letras es el valor obtenido en el paso anterior. La expresión completa denota la frecuencia con la que una letra es la vocal v. Para cada vocal v imprima el mensaje "Frecuencia vocal v = FrecuenciaVocal". Reemplazando v y FrecuenciaVocal por los valores correspondientes, para que el mensaje impreso resulte igual al que se muestra en el ejemplo de ejecución.  (10 Puntos)

6) Invoque a la funcion frase_con_mas_palabras e imprima el mensaje "La frase i tiene el mayor numero de palabras. Tiene x  palabras". Reemplazando i y x por el número de fila en el que se encuentra la frase con mayor cantidad de palabras y la cantidad de palabras, respectivamente. (5 Puntos)

codigo:

const int N = 6; //Cantidad maxima de frases

const int M = 20; // Cantidad maxima de caracteres por frase


void ingresar_frases(char frases[N][M], int longitud_frase[N], int cant_frases);

void mostrar_frases(char frases[N][M], int longitud_frases[N], int cant_frases);

void pasar_a_minusculas_y_espacios(char frases[N][M], int longitud_frase[N], int cant_frases);

int contar_letras(char frases[N][M], int frase, int longitud_frase);

int contar_ocurrencias(char frases[N][M], int frase, int longitud_frase, char c);

int frase_con_mas_palabras(char frases[N][M], int longitud_frase[N], int cant_frases, int&

frase);


int main()

{

char frases[N][M];

int long_frases[N];

int numero_frases;


cout<<"Ingrese el numero de frases a cargar"<<endl;

cin>>numero_frases;

while(numero_frases < 1 || numero_frases > N){

cout<<"Debe ser >= 1 y menor o igual a "<<N<<endl;

cin>>numero_frases;

}

cout<<"El numero de frases a cargar es "<<numero_frases<<endl;


ingresar_frases(frases, long_frases, numero_frases);

cout<<"Las frases ingresadas son:"<<endl;

mostrar_frases(frases, long_frases, numero_frases);


cout<<"Las frases ingresadas en minusculas y con espacio son:"<<endl;

pasar_a_minusculas_y_espacios(frases, long_frases, numero_frases);

mostrar_frases(frases, long_frases, numero_frases);


int num_letras = 0;

for(int i=0; i<numero_frases;i++){

num_letras += contar_letras(frases, i, long_frases[i]);

}

cout<<"\nHay un total de : "<<num_letras<<" letras"<<endl;

cout<<endl;

cout<<"Frecuencia vocales: "<<endl;

double frec_voc;

char vocales[5] = {'a','e','i','o','u'};

for(int i=0; i<5; i++){

frec_voc = 0.0;

for(int j=0; j<numero_frases; j++){

frec_voc += contar_ocurrencias(frases, j, long_frases[j], vocales[i]);

}

cout<<fixed;

cout << setprecision(2);

cout<<"Frecuencia vocal '"<<vocales[i]<<"' = "<<frec_voc/num_letras<<endl;

}


return 0;


}