2.2 Funciones para el tratamiento de arrays con cadenas de caracteres

Sabemos que el ANSI C tampoco predefine el tipo cadena de caracteres, aunque sí funciones para su tratamiento: strcmp, strlen y strcpy (en la librería sring.h). La declaración del tipo Cadena y del correspondiente tipo TablaCadena es:






Los esquemas vistos en la sección 2.1 sirven igual para las cadenas o los arrays de cadenas, aunque hay que tener cuidado con el uso de las funciones de string.h.

2.2.1 Función tal que dada una Cadena s y un carácter c, devuelva el número de veces que está c en s.









2.2.2 Función que lee un array de cadenas de caracteres hasta que introduzca la palabra FIN:
Nótense las semejanzas y diferencias con la función 2.1.2.











2.2.3 Función que escriba en pantalla el contenido de un array de cadenas, una por línea:









2.2.4 Función que cuenta el número de veces que una TablaCadena contiene una palabra determinada:









2.2.5 Función tal que dado una TablaCadena t y una Cadena s, nos devuelva si existe s en t.











2.2.6 Función tal que dado una TablaCadena t y un entero n, devuelva otra TablaCadena con las palabras de t que tienen más de n caracteres.










2.2.7 Función tal que dado una TablaCadena t y una Cadena s, sume las longitudes de las palabras de t que son anteriores (en el sentido lexicográfico) a s.










2.2.8 Usando la función 2.2.4, escriba el código de una función tal que dada una TablaCadena t y un carácter c, devuelva la Cadena de t que más veces contiene el carácter c.













2.2.9 Función tal que dado una TablaCadena t, un entero n y una Cadena s, nos devuelva si existe en t alguna cadena posterior a s (en orden lexicográfico) y de longitud mayor de n.

 
 
2.2.10 Función que reciba una TablaCadena t y devuelva la cadena de t con más caracteres.










Nótese que las funciones en C no pueden devolver una Cadena en el nombre de la función y deben obligatoriamente ser devueltas como argumento de entrada/salida.

2.2.11 Función tal que dada una TablaCadena t y un carácter c,  devuelva la primera posición de t donde hay una palabra que termina por c
 
 








2.2.12 Función tal que dada una TablaCadena t y un carácter c,  devuelva si todas las palabras de t empiezan por c









2.2.13 Función tal que dada una TablaCadena t y un entero m, devuelva una cadena concatenando las cadenas de t que tengan longitud mayor de m. Nótese que esta función es realmente un esquema de “suma” donde el operador de acumulación es la concatenación de cadenas:

 











2.2.14 Función tal que dada una TablaCadena t, devuelva una cadena concatenando las iniciales de las palabras de t. Este problema también es un esquema de filtro en que las posiciones del elemento a filtrar (el array t) son las mismas que el array filtrado (la cadena iniciales):

 









2.2.15 Función tal que dada una TablaCadena t y un carácter c devuelva el número de veces que aparece el carácter c en las palabras de t. Este es un esquema contador donde hay que tener en cuenta que un bucle for en i recorre cada palabra y un bucle en j recorre los caracteres de la palabra i-ésima.

 


















2.2.16 Función tal que dada una TablaCadena t y un carácter c devuelva la frecuencia absoluta del número de vocales en las palabras de t. Este caso de contador múltiple se debe resolver mediante un array de enteros que guarde los distintos contadores. Para este caso concreto no hace falta devolver el número de contadores porque 5 son las vocales en castellano. No se debe olvidar inicializar el contador a 0, en este caso los elementos del array contador.













 
2.2.17 Un posible programa principal con algunas invocaciones a las funciones anteriores es:


 

No hay comentarios:

Publicar un comentario