Dada una lista de 100 palabras se pide hallar e imprimir que palabra tiene más letras 'a' entre sus caracteres.
Se recomienda usar una función CONTAR que reciba un carácter y una cadena y retorne la cantidad de veces que ese carácter aparece en esa cadena. Resolver de dos maneras:
- Usar una función CONTAR que debe ser llamada con la letra 'a' como argumento.
- Usar una función CONTAR que sólo sabe contar caracteres 'a' en una cadena.
Esta funcion toma por parametro un puntero a char, un vector de char de tipo constante ("Texto a mostrar") y un entero que define la longitud de la variable que deseo ingresar. Saca por consola el texto definido en el segundo parametro y luego obtiene una variable de la longitud establecida en el tercer parametro y la pasa por referencia a la variable entrada que esta definida fuera de esta funcion
void getData(char *entrada, const char salida[], int largo)
{
cout << salida << endl;
cin.getline(entrada, largo);
}
Esta funcion toma por parametro una cadena de texto como puntero a una variable, un entero con la longitud de esa cadena y un char a ser comparado. y devuelve un entero con la cantidad de coincidencias que encuentra comparando letra a letra. En proxima version lo realizare usando expresiones regulares para asegurar performance
int contar(char *texto, int longitud, const char letra)
{
int counter;
for (int i = 0; i < longitud; i++)
{
if (texto[i] == letra)
{
counter++;
}
}
return counter;
}
Esta funcion itera n veces (definidas en su llamada) y completa un array con los datos solicitados
void loadBatch(int longitud, char texto[][32])
{
for (int i = 0; i < longitud; i++)
{
getData(texto[i], "Ingrese Palabra", 32);
}
}
El lote de proceso toma el array con la longitud configurada y llama por cada fila a la funcion contar que devuelve el numero de letras a que tiene. tiene por retorno un entero que es el indice de la palabra con mas letras a
int processBatch(int longitud, char texto[100][32])
{
int mayor = 0;
int ubicacion = 0;
for (int i = 0; i < longitud; i++)
{
cout << texto[i] << endl;
int temporary;
temporary = contar(texto[i], 32, 'a');
if (mayor < temporary)
{
mayor = temporary;
ubicacion = i;
}
}
return ubicacion;
}
La funcion principal, define el array con longitud igual a una constante que define la cantidad de palabras. y llama al lote de carga y luego llama al lote de proceso
int main()
{
char texto[longitudLote][32];
int masLetrasIguales = 0;
loadBatch(longitudLote, texto);
masLetrasIguales = processBatch(longitudLote, texto);
cout << "La palabra con mas letras a es " << texto[masLetrasIguales] << " numero de orden " << masLetrasIguales << " Tiene " << masLetrasIguales << " letras iguales" << endl;
system("pause");
return 0;
}