INSTITUTO POLITÉCNICO NACIONAL
Unidad Profesional Interdisciplinaria en Ingeniería y
Tecnologías Avanzadas.
“Introducción a la programación”
Practica 6 “Cadenas”
Profesor: José Luis Cruz Mora
PRESENTA:
PÉREZ RODRÍGUEZ EDGAR
GRUPO 1MV1
25 DE NOVIEMBRE DE 2024.
Objetivo
Desarrollar programas utilizando cadenas para el desplegado de información.
Introducción
En lenguaje C las cadenas son secuencias de caracteres que se representan como un arreglo
de estos mismos, representados por el tipo de variable char. Estas cadenas contienen
información que puede ser seccionada, copiada, colocada en otras cadenas, entre otras
funciones con la biblioteca estándar string.h, aunque también para acciones más específicas
el programador puede editar estas cadenas.
Las cadenas son de suma importancia en este lenguaje ya que permiten trabajar con texto
y procesar datos de una gran variedad de manera efectiva, se explicarán características
importantes de las cadenas como el carácter nulo “\0” y cual es su función en las cadenas
de caracteres.
En esta practica se explorará como declarar y manipular un arreglo para obtener la
información que se solicite haciendo uso de la información aprendida en las prácticas
anteriores.
Desarrollo
Programa 1: Tamaño cadena
Este programa debe solicitar al usuario una cadena de texto y posteriormente mostrar el
tamaño de esta cadena sin hacer uso de otra biblioteca estándar más que <stdio.h>. Por
medio de la función fgets() obtendremos la cadena de texto del usuario, ya que scanf solo
obtiene la primera palabra, si esta es separada se perderá el resto de información, pero con
la función fgets() no es así, está función se detiene hasta que se llene el arreglo de caracteres
o se presione la tecla enter, aunque también guardará esta tecla como parte de la cadena.
Ahora para analizar esta cadena y mostrar el tamaño
se crea una función que analice la función e
incremente un contador hasta que se tope con el
carácter nulo, este carácter nulo indica el fin de una
cadena, por lo que con los incrementos del contador
podremos saber el tamaño de esta cadena.
Esta función devolverá el tamaño de la cadena
(incluyendo el enter ya que representa un “\n” que
forma parte de la cadena).
Programa 2: Total
Este programa solicita al usuario una cadena de texto y posteriormente muestra el total de
letras, palabras, números y caracteres especiales. Para esto se hará uso del código ascii, el
cual es una tabla que relaciona todos los caracteres de la computadora con valores en
decimal y es lo que se utiliza para transformar un número en un carácter en específico. Las
letras minúsculas tienen valor de 97-122 y las mayúsculas de 65-90, por lo que haciendo
uso de esto se puede saber si un carácter de una cadena es una letra ya sea mayúscula o
minúscula.
En este caso con el for se recorrerá toda la cadena hasta encontrar el carácter nulo y si algún
carácter cumple las características numéricas entonces se aumentará el contador de letras.
Lo mismo en caso de los números, solo que en este caso los valores van desde 48 hasta 57.
Los caracteres especiales son todo aquello que no sea una letra o un número, por lo que se
hará lo mismo, pero se unirán las condiciones de números y letras y se negarán para que
cumpla las características de un carácter especial.
Por ultimo para la función de palabras se debe definir que es una palabra, en este caso es
una sucesión de letras separadas por un carácter especial o número, por lo que bajo esta
definición se crea una función que haga el mismo recorrido que las anteriores, pero esta
vez detectará si está en una sucesión de letras por medio de una variable auxiliar, en cuanto
entre a una sucesión de letras el contador aumentará y no volverá a aumentar hasta que
sea interrumpido por un carácter especial y entre de nuevo e una letra.
Programa 3: Repetición letra
Este programa debe solicitar una cadena de texto al usuario y posteriormente mostrar la
letra que más se repite y la cantidad de repeticiones, para este programa lo primero que se
debe hacer es una función que convierta una cadena de texto ordinaria para que todas las
letras sean mayúsculas o minúsculas, en este caso una función para convertir todas las
letras a minúsculas para facilitar el análisis de esta cadena.
En este caso la función recorrerá el arreglo hasta
llegar al carácter nulo y por medio de un if filtrará
las letras mayúsculas, por sus valores entre 65-90 y
si se encuentra dentro de estos números, le sumará
32 para pasarlo a minúsculas.
De esta forma las letras de la cadena ya se
encuentran dentro de los valores de 97 y 122 que
representan las minusculas en ASCII y de esta forma
solo se tienen que analizar estos valores.
Posteriormente se creará una función que llamará a la función anteriormente mostrada,
una vez convertido el arreglo a minusculas, por medio de un for que vaya desde 97 hasta
122 (analizando asi todas las letras minusculas),dentro se colocará otro for que recorra el
arreglo hasta llegar al carácter nulo y comparando si es igual a la letra del primer ciclo,
comenzando por el 97 (a), en caso de ser iguales se aumentará un contador y por medio de
una sentencia de condición if, si el contador es mayor que el número de repeticiones anteior
(inicializado en cero) entonces se guardarán los valores de i que representa la letra y del
cotnador que representa el número de repeticiones de la letra. Por ultimo si el contador es
mayor que cero, lo que represeta que hubo por lo menos una letra, mostrará el la letra que
mas se repite y la cantidad de veces que se repite.
Programa 4: Palabra más larga y corta
Este programa debe solicitar al usuario una cadena de texto y mostrar la palabra mas larga
y la mas corta de la cadena. Para llevar a cabo este programa se tomará como base el
programa 2, el cual era capaz de detectar palabras, ya la que las palabras son sucesiones de
letras separadas por un carácter especial o número. La diferencia es que en este caso no se
requiere llevar un conteo de la cantidad de palabras, sino de la cantidad de letras de cada
palabra y almacenarla en caso de ser la mayor. Con una variable auxiliar se determinará si
la palabra acaba de empezar y se guardará el valor de la cadena donde inicia la palabra, en
caso de que la palabra sea la mas grande, este valor se guardará.
Si se está dentro de una palabra
se irá llevando registro y se
aumentará el contador y así
hasta que el valor de la cadena
no sea una letra.
Una vez registrado el valor
inicial de la palabra en la cadena
y la cantidad de letras que tiene,
si esta es la mayor se guardará y
se pasará a la siguiente sección
de la función.
Haciendo uso de la biblioteca de
funciones string.h, primero se
pone la condición, en caso de
que el contador sea mayor que
cero (o sea que por lo menos se
encuentre una palabra),
entonces se creará una cadena
con los valores de contmax+1
para que quepa la palabra con
mayor número de caracteres y al final el carácter nulo. Por medio de strncpy( ), función que
copia una sección específica de una cadena en otra se escribe primero la cadena destino,
luego la dirección de memoria donde comienza la sección que queremos copiar y la longitud
que queremos copiar, en este caso todos los valores están registrados por la sección
anterior del código y de esta forma se muestra la palabra con mayor longitud, por último el
ultimo valor del carácter se iguala al carácter nulo. Para hacer la palabra mas corta es lo
mismo, solo se tiene que invertir un signo “<” por un “>” en la condición para guardar las
palabras.
Programa 5: Tipo de carácter
Este programa debe solicitar al usuario un
carácter y debe mostrar el tipo de carácter que
es, si una mayúscula, minúscula, número o
carácter especial. Para llevar a cabo esto se
hará uso de las sentencias de condición if y los
códigos ASCII.
Minúsculas: 97 – 122
Mayúsculas: 65 – 90
Números: 48 – 57
Por último, para los caracteres especiales, son
todo aquello que no sea número o letras, por
lo que la función se vería de la siguiente forma.
Programa 6: Repetición Letras
Este programa muestra las repeticiones de cada una de las letras en una cadena de
caracteres ingresada por el usuario. Para esto se hará uso de la función de conversión a
minúsculas mostrado anteriormente, una vez convertido a minúsculas todas las letras del
arreglo, con una lógica similar al programa 3, por medio de un for que vaya desde 97 hasta
122, revisará el arreglo hasta que tope con el valor nulo y si el valor de i es igual al de la
cadena entonces se aumentará un contador, si se detecta otra letra igual en la cadena se
sumará de nuevo al contador y así hasta llegar al valor del carácter nulo. Una vez que llegue
a este carácter, si el contador
es mayor que cero mostrará la
letra y su número de
repeticiones y se reiniciará el
contador para repetir el
proceso con la siguiente letra.
Resultados
Programa 1: Tamaño cadena
Este programa muestra el tamaño de una cadena de hasta 100 caracteres, el programa
completo se ve así:
En este caso la cadena tiene 5 caracteres porque
también cuenta el enter como un carácter,
aunque no se muestre en pantalla forma parte
de la cadena.
Mismo caso con el carácter
“\n”.
Programa 2: Total
Este programa muestra el total de letras, números, palabras y caracteres especiales en una
cadena de texto, el programa se ve de la siguiente forma:
Los caracteres especiales son en este
caso, el punto, los espacios y el enter
al final de la cadena, aunque este el
usuario no lo vea.
Programa 3: Repetición letra
Con base a una cadena de texto ingresada por el usuario muestra la letra que se repite con
mayor frecuencia y la cantidad de veces que se repite, el programa terminado se ve así:
Ejemplos:
Programa 4: Palabra más larga y corta
Este programa solicita una cadena de texto al usuario y muestra las palabras mas corta y
larga de esta, el programa terminado se ve así:
Ejemplo:
Programa 5: Tipo de carácter
El programa solicita un único carácter al usuario y devuelve que tipo de carácter es, el
programa concluido se ve así:
Ejemplos:
En el ultimo caso, detecta el enter como carácter especial ya que este se representa como “\n”.
Programa 6: Repetición Letras
El programa solicita una cadena de caracteres y posteriormente muestra la cantidad de
letras y la cantidad de cada una con la que cuenta el arreglo, el código terminado se ve de
la siguiente forma:
Ejemplos:
Conclusión
Las cadenas de texto son de suma utilidad cuando se saben manipular correctamente, esto
se facilita con el uso de herramientas como la biblioteca string.h, la cual proporciona
muchas funciones para el manejo de estas cadenas. Otra cosa fundamental de comprender
es el carácter nulo, el cual indica cuando una cadena de texto concluye por lo que es de
suma utilidad porque de esta forma podemos saber cuando termina una cadena sin el
riesgo de pasar a secciones de memoria que no están reservados.
Estas cadenas se manejan de cierta forma como un arreglo, en la que cada espacio está
reservado para un carácter, con esta información se pueden manipular similar a una cadena
de números, pero con diferencias en el tipo de datos que contienen.