Make your own free website on Tripod.com

Práctica #8

Manejo de Cadenas de Caracteres.

8.1 Cadena de Caracteres.
8.2 Validacion de una cadena.

8.2.1 Ejemplo #1 (Modo Texto).
8.2.2 Ejemplo #2 (Modo Gráfico).

8.3 Actividad.

8.1 Cadenas de Caracteres.

Una cadena es un conjunto de caracteres, donde cada caracter se encuentra en una posición determinada dentro de la cadena. Se puede utilizar una cadena general o una cadena fija de un número determinado de caracteres, estas se declaran en el siguiente formato:

char *var_cadena ; // Almacena la direccion donde se encuentra almacenada una cadena de caracteres.
char cadena [N]; // declaración de una cadena de N caracteres

La librería de manejo de cadenas string.h es un conjunto de funciones útiles para manipulación de datos de cadenas, entre ellas tenemos:

Función
Descripción
Ejemplo
Salida
strcpy(cad1,cad2)
Sustituye el contenido de cad1 por el de cad2
strcpy(ciudad,estado);
ciudad="baja california"
strncpy(cad1,cad2,n)
Copia n caracteres de cad2 a cad1
strncpy(ciudad,estado,3);
strncpy(cadena,"baja calif",3);
ciudad="tijuanabaj"
strcat(cad1,cad2)
Agrega cad2 al final de cad1
strcat(ciudad,estado);
strcat(ciudad, "sonora");
ciudad="tijuanasonora"
strncat(cad1,cad2,n)
Agrega como máximo n caracteres de cad2 a cad1
strncat(ciudad,estado,4);
strncat(ciudad,"sinaloa",6);
ciudad="tijuanabaja"
ciuda="tijuanasinalo"
int strcmp(cad1,cad2)
Compara cad1 con cad2Regresa 0 si son iguales, regresa > 0 Si cad1 es mayor que cad2, regresa < 0 si cad1 es menor cad2. La comparación es lexicográfica, es decir, de manera alfabética, de A a Z, y además las letras minúsculas son mayores que las mayúsculas.
res=strncat(ciudad,estado);
res=strncat(ciudad,"tijuana");
res=strncat(estado,ciudad);
res tendrá valor >0
res tendrá valor =0
res tendrá valor <0
int strcmpi(cad1,cad2) Compara cad1 con cad2 y regresa los mismos resultados considerandoa mayúsculas y minúsculas iguales. res=strncat(ciudad,estado);
res=strncat(ciudad,"TIJUANA");
res=strncat(estado,ciudad);
res tendrá valor >0
res tendrá valor =0
res tendrá valor <0
strncmp(cad1,cad2,n) Compara n caracteres de cad1 con cad2. Regresa los mismos valores que strcmp. res=strncat(ciudad,"tij.bc",3);
res=strncat(ciudad,"tecate", 5);
res tendrá valor 0. Porque las 3 primeras letras son iguales
res tendrá valor diferente a 0 porque las 5 primeras letras no son iguales.
strlen( cad ) Determina la longitud de la cadena. res=strlen(ciudad);
res=strlen("UABC");
res=7
res=4
strlwr( cad ) Convierte la cadena a minúsculas strlwr(ciudad); ciudad="tijuana"
strupr( cad ) Convierte cadena1 a mayusculas strlupr(ciudad); ciudad="TIJUANA"
strrev( cad ) Invierte la cadena strrev(ciudad); ciudad="anaujit"
strset( cad, caracter) Rellena toda la cadena con el caracter x especificado strset(ciudad.'x'); ciudad="xxxxxxx"

8.2 Validación de una Cadena.

La validación de una cadena significa aceptar exclusivamente letras para capturar una palabra, y agregar el espacio si queremos validar la captura de una frase. Igualmente se puede validar la captura de un número aceptando únicamente dígitos.

Para declarar una cadena vacía sin caracteres se inicializa con el fin de cadena '\x0' en la posición cero.
Para agregar la opción de corregir en la captura, entonces debemos validar la tecla BACKSPACE, cuyo caracter ASCII es el número ocho.

8.2.1 Ejemplo #1 (Modo Texto).

char *cadena , tecla ;
int pos;
cad[0]= '\x0';

do {
    textcolor( WHITE );
    gotoxy( 10,10 );
    cprintf ( " %s " , cad );
    tecla = getch();

    if ( isalpha ( tecla ) )
    {
        pos = strlen ( cad );
        cad [ pos ] = tecla ;
        cad [ pos + 1 ] = '\x0';
    }

    if ( tecla == '\x8' )
    {
        pos = strlen (cad );
        textcolor ( BLUE );
        gotoxy( 10, 10 );
        cprintf ( " %s " , cad );
        cad [ pos -1 ] = '\x0';
    }
} while ( tecla != '\xD' );

8.2.2 Ejemplo #2 (Modo Gráfico).

char *cadena , tecla ;
int pos;
cad[0]= '\x0';

do {
    setcolor( WHITE );
    outtextxy( 100 , 100, cad );
    tecla = getch();

    if ( isalpha ( tecla ) )
    {
        pos = strlen ( cad );
        cad [ pos ] = tecla ;
        cad [ pos + 1 ] = '\x0';
    }

    if ( tecla == '\x8' )
    {
        pos = strlen (cad );
        setcolor ( BLUE );
        outtextxy( 100 , 100 , cad );
        cad [ pos -1 ] = '\x0' ;
    }
} while ( tecla != '\xD' );

Actividad.

Serie de ejercicios a realizar.

  1. Introducir una cadena (máximo 20 caracteres) y convertir las mayúsculas en minúsculas y viceversa. Desplegar la cadena resultante.

  2. Diseñar un programa en el cual se introduzca una cadena. Una vez introducida, borrar la pantalla y desplegar dicha cadena de manera centrada en la parte superior del monitor.

  3. Convertir un número romano a decimal.

  4. Un palíndromo es una cadena que se escribe de la misma forma hacia adelante y hacia atrás (ejemplos: radar, seres, anita lava la tina). Realizar un programa que determine si la cadena (puede estar formada de una o más palabras, por lo que hay que ignorar los espacios y signos de puntuación) es un palíndromo.

  5. Convertir un número romano (capturado como cadena y no mayor a 3999) a decimal.

  6. Introducir un número binario y dé su equivalente en decimal. Validar que no se introduzcan dígitos que no pertenezcan al sistema binario.

  7. Se me da una cadena que es principalmente una dirección de Internet (URL), por ejemplo http://www.yahoo.com/ crear una función que convierta esta cadena a http://com.yahoo.www/.

  8. Código Morse. Este código asigna una serie de puntos y rayas a cada letra del alfabeto, a cada dígito y unos cuantos caracteres especiales. La separación entre palabras se indica por un espacio (o ausencia de puntos y rayas). Escribir un programa donde:
    1. Se escriba una frase en español y cifre la frase en código Morse.
    2. Se lea una frase en código Morse y la convierta en el equivalente en español. Utilice un espacio en blanco entre cada letra codificada Morse y tres espacios en blanco entre cada palabra codificada en Morse.