Está en la página 1de 14

GLab 01

ELEMENTOS DE LA COMPUTACION

GUIA DE LABORATORIO 1: ARREGLO DE CADENAS OBJETIVOS:


Conocer y utilizar los datos estructurados, en especial los de tipo lista de caracteres. Implementar el procedimiento para su control utilizando pseudocdigo.

MATERIAL:
Turbo C 3.1, Visual C++ versin 6.0 para WINDOWS

BIBLIOGRAFIA:
Gua de las Estructuras de Datos, James R. Groff, Paul N. Weinberg Wronx, 2003 C Primer Plus, Third Edition, Stephen Prata Publisher: Sams Publishing , 2001

CARACTERES EN UN ARREGLO
TIPS PARA EL CONTROL DE CADENAS EN C Una cadena de caracteres consta de uno o ms caracteres, limitados por comillas que sirven para sealar el comienzo y final de la misma. En el lenguaje C una arreglo de cadena de caracteres se almacenan en celdas de memoria adyacentes, ocupando un byte cada carcter y finalizando con un carcter nulo que se representa por medio de una barra inclinada y un cero (\0). Para almacenar una cadena de caracteres necesitamos crear un array, cuya dimensin sea superior al nmero de caracteres que comprende la cadena. La funcin gets(nombre_del_arreglo) es capaz de introducir cadenas desde el teclado hasta que se pulsa un retorno de carro (enter) y luego asigna la cadena de caracteres a la variable situada entre parntesis. Esta funcin necesita de las libreras strings.h y stdio.h. La diferencia con cin>>nombre; consiste en que dicha funcin finaliza en el momento en que se introduce un espacio en blanco, de forma que slo admite una palabra y no asimila la cadena entera. La funcin puts(nombre) solo imprime cadena de caracteres; no puede imprimir nmeros o hacer conversiones de formato. Una llamada a puts() requiere mucho menos tiempo que la misma llamada a cout, porque solo imprime cadena de caracteres. Requiere de strings.h. Ejercicio Cadena0 # include <iostream.h> # include <string.h> # include <stdio.h> int main() {
Docente: NEGRETE CARHUARICRA, Lisbeth
Pgina 1

GLab 01

ELEMENTOS DE LA COMPUTACION

char cad[40]; //cin>>cad; gets(cad); //cout<<cad; puts(cad); return(0); }

La funcin strlen(cadena) devuelve el nmero de caracteres de una variable cadena que finaliza con un carcter nulo (\0). El carcter nulo no se contabiliza. Requiere de strings.h. Aadir el siguiente cdigo al programa anterior despus de la instruccin puts: int tam=strlen(cad); cout<<tam; o cout<< strlen(cad);

EJERCICIOS A DESARROLLAR DE CADENA DE CARACTERES


1) Dado un texto de un telegrama que termina en punto: a) Contar la cantidad de caracteres que tiene la cadena. b) Informar la cantidad de veces que aparece la vocal a. c) Informar el nmero de espacios en blanco. Nota: Las palabras estn separadas por un espacio en blanco. 2) Dado un texto que finaliza en punto, se pide: a) La posicin inicial de la palabra ms larga. b) La longitud del texto. c) Cuantas palabras con una longitud entre 8 y 16 caracteres poseen ms de tres veces la vocal a. Nota: Las palabras pueden estar separadas por uno o ms espacios en blanco. Pueden haber varios espacios en blanco antes de la primera palabra y tambin despus de la ltima. Se considera que una palabra finaliza cuando se encuentra un espacio en blanco o el final de la cadena y no un signo de puntuacin. 3) Escribir el pseudocodigo que invierta una cadena, almacenando en un nuevo arreglo los caracteres en orden inverso; luego imprimirlos. 4) Escribir el pseudocodigo que lea una frase y a continuacin visualice cada palabra de la frase en columna, seguido del nmero de letras que componen cada palabra. La frase termina con un .

Docente: NEGRETE CARHUARICRA, Lisbeth

Pgina 2

GLab 01

ELEMENTOS DE LA COMPUTACION

Ejemplo: Frase: La casa es linda. Solucin: La 2 casa 4 es 2 linda 5 5) Escribir el pseudocodigo que calcule la frecuencia de aparicin de las vocales de un texto proporcionado por el usuario. El mismo termina con un .. La solucin se debe presentar en forma de histograma. Ejemplo: Frase: La casa es linda. Solucin: a 4 **** e1* i1* 6) Escribir el pseudocodigo que lea una cadena de caracteres, y luego de la cadena elimine todas las vocales, y ese resultado mostrarlo en pantalla. Ejemplo: Cadena: Mi casa es lindaaaa. Solucin: M cs s lnd.

SOLUCION DE EJERCICIOS IMPLEMENTADOS EN C


EJERCICIO 1. Completo
# include <iostream.h> # include <stdio.h> # include <string.h> int main() { char cad[100]; int tam,i; int cont_a; //contador de a int cont_e; //contador de espacios en blanco printf("Ingrese el texto :"); gets(cad); //Calcula el numero de caracteres de la cadena tam=strlen(cad); cout<<"\n"<<"La cantidad de caracteres es:"<<tam; //Cantidad de veces que aparece a cont_a=0; //inicia el contador en 0 for (i=0; i<tam;i++) { if (cad[i]=='a') Docente: NEGRETE CARHUARICRA, Lisbeth
Pgina 3

GLab 01 cont_a=cont_a+1; }

ELEMENTOS DE LA COMPUTACION

cout<<"\n"<<"La cantidad de caracteres a es:"<<cont_a; //Cantidad de espacios en blanco cont_e=0; //inicia el contador en 0 for (i=0; i<tam;i++) { if (cad[i]==' ') cont_e=cont_e+1; } cout<<"\n"<<"La cantidad de caracteres de espacios en blanco es:"<<cont_e<<"\n";

return (0); }

EJERCICIO 2. Parcial Versin b: El tamao de la palabra mas larga


#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <strings.h> int main() { char cad[100]; int tam; //Tamao de la cadena int x,tamp; //Contador para el tamao de palabra int pmasl; //Palabra mas larga //Obtiene el texto a analizar printf("Ingrese el texto :"); gets(cad); //Calcula el numero de caracteres de la cadena tam=strlen(cad); //Localiza las palabras que estan divididas por espacios //Tecnica: Contar las palabras hasta encontrar un espacio pmasl=0; //Inicializa la palabra mas larga a cero tamp=0; //Contador de tamao en caracteres de la palabra for (x=0; x<tam;x++) { if (cad[x]==' ') { if (tamp>pmasl) // Si el tamao de tamp es mas larga pmasl=tamp; //que pmasl, este toma el nuevo valor Docente: NEGRETE CARHUARICRA, Lisbeth
Pgina 4

GLab 01

ELEMENTOS DE LA COMPUTACION

//Nuevamente inicializa el tamao de tamp tamp=0; } else //En el caso que sea distinto de espacio { tamp++; if (x==tam-1) //verifica si es la ultima palabra if (tamp>pmasl) // Si el tamao de tamp es mas larga pmasl=tamp; //que pmasl, este toma el nuevo valor } } printf("\nEl tamao de la palabra mas larga es: %d", pmasl); getch(); return 0; }

Docente: NEGRETE CARHUARICRA, Lisbeth

Pgina 5

GLab 01

ELEMENTOS DE LA COMPUTACION

EJERCICIO 2. Parcial Versin c: La posicin inicial de la palabra mas larga solamente


#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <strings.h> int main() { char cad[100]; int tam; //Tamao de la cadena int x,y; //contadores int posini; //posicion inicial de la palabra int contcp; //contador de caracteres de la palabra int pmasl=0; //palabra mas larga //Obtiene el texto a analizar printf("Ingrese el texto :"); gets(cad); //Calcula el numero de caracteres de la cadena tam=strlen(cad); //Localiza las palabras que estan divididas por espacios //Tecnica: Contar las palabras hasta encontrar un espacio for (x=0; x<tam;x++) //Controla la salida general del bucle { //Nota nos desplazaremos usando la variable x del for principal //Avanza mientras sea espacio, para el caso de espacios iniciales for(y=x;cad[y]==' ';y++); x=y; //Actualiza el avance de y(que partio de x) en x //Avanza mientras sea caracteres menos espacio, se usa el //operador && Y LOGICO contcp=0; //Inicializa el contador de caracteres de la palabra for(y=x;cad[y]!=' ' && y<tam;y++) contcp++; if (contcp>pmasl) { pmasl=contcp; posini=x+1; //porque x guarda el ultimo valor de x } //antes de ingresar al for de arriba x=y; //Actualiza el avance de y(que partio de x) en x } printf("\nEl tamao de la palabra mas larga es: %d", pmasl); printf("\nLa posicion inicial de la palabra mas larga es: %d", posini); getch(); return 0; Docente: NEGRETE CARHUARICRA, Lisbeth
Pgina 6

GLab 01

ELEMENTOS DE LA COMPUTACION

EJERCICIO 2. Completo Versin d: solucin completa con todas las 3 subpreguntas #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <strings.h> int main() { char cad[100]; int tam; //Tamao de la cadena completa int x,y; //contadores int posini; //posicion inicial de la palabra int contcp; //contador de caracteres de la palabra int pmasl=0; //palabra mas larga int conta; //Contador de vocales a int contador=0; //Contador de palabras con la caracteristica de c //Obtiene el texto a analizar printf("Ingrese el texto :"); gets(cad); //Calcula el numero de caracteres de la cadena tam=strlen(cad); //Localiza las palabras que estan divididas por espacios //Tecnica: Contar las palabras hasta encontrar un espacio for (x=0; x<tam;x++) //Controla la salida general del bucle { //Nota nos desplazaremos usando la variable x del for principal //Avanza mientras sea espacio, para el caso de espacios iniciales for(y=x;cad[y]==' ';y++); x=y; //Actualiza el avance de y(que partio de x) en x //Avanza mientras sea caracteres menos espacio, se usa el //operador && Y LOGICO contcp=0; //Inicializa el contador de caracteres de la palabra conta=0; //inicializa el contador de vocales a for(y=x;cad[y]!=' ' && y<tam;y++) { contcp++; if (cad[y]=='a') conta++; }
Docente: NEGRETE CARHUARICRA, Lisbeth
Pgina 7

GLab 01

ELEMENTOS DE LA COMPUTACION

//Verifica si es la palabra mas larga if (contcp>pmasl) { pmasl=contcp; posini=x+1; //porque x guarda el ultimo valor de x } //antes de ingresar al for de arriba //Verificando la pregunta c de 2 if ((contcp>=8) && (contcp<=16) && conta>3) contador++; x=y; //Actualiza el avance de y(que partio de x) en x } printf("\nEl tamao de la cadena completa es: %d", tam); printf("\nEl tamao de la palabra mas larga es: %d", pmasl); printf("\nLa posicion inicial de la palabra mas larga es: %d", posini); printf("\nLa cantidad de palabras con mas de 3 a y de tamano entre 8 y 16 es: %d", contador); getch(); return 0; }

Docente: NEGRETE CARHUARICRA, Lisbeth

Pgina 8

GLab 01

ELEMENTOS DE LA COMPUTACION

EJERCICIO 3. Completo
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <strings.h> int main() { char cad[100]; //cadena real char cadi[100]; //cadena invertida int tam,x,y; printf("Ingrese el texto :"); gets(cad); //Invierte la cadena en otro arreglo tam=strlen(cad); //La variable x controlara del ultimo al primero en cad //La variable y controlara del primero al ultimo en cadi y=0; for (x=tam-1; x>=0;x--) { cadi[y]=cad[x]; y++; } printf("\nLa cadena invertida es: "); puts(cadi); //imprime solo la cadena. getch(); return 0; }

Docente: NEGRETE CARHUARICRA, Lisbeth

Pgina 9

GLab 01

ELEMENTOS DE LA COMPUTACION

EJERCICIO 4. Completo (derivado a partir de la pregunta 2)


#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <strings.h> int main() { char cad[100]; int tam; //Tamao de la cadena completa int x,y; //contadores int contcp; //contador de caracteres de la palabra //Obtiene el texto a analizar printf("Ingrese el texto :"); gets(cad); //Calcula el numero de caracteres de la cadena tam=strlen(cad); //Localiza las palabras que estan divididas por espacios y las imprime //Tecnica: Contar las palabras hasta encontrar un espacio for (x=0; x<tam;x++) //Controla la salida general del bucle { //Nota nos desplazaremos usando la variable x del for principal //Avanza mientras sea espacio, para el caso de espacios iniciales for(y=x;cad[y]==' ';y++); x=y; //Actualiza el avance de y(que partio de x) en x //Avanza mientras sea caracteres menos espacio, se usa el //operador && Y LOGICO contcp=0; //Inicializa el contador de caracteres de la palabra for(y=x;cad[y]!=' ' && y<tam;y++) { putchar(cad[y]); contcp++; } printf(" %d\n",contcp); x=y; //Actualiza el avance de y(que partio de x) en x } getch(); return 0; }

Docente: NEGRETE CARHUARICRA, Lisbeth

Pgina 10

GLab 01

ELEMENTOS DE LA COMPUTACION

EJERCICIO 5. Completo
#include <stdlib.h> #include <conio.h> #include <strings.h> int main() { char cad[100]; //Cadena a leer int tam,x; int conta=0, conte=0, conti=0, conto=0, contu=0; printf("Ingrese el texto :"); gets(cad); //Localiza y cuenta el numero de veces que aparece las vocales tam=strlen(cad); for (x=0; x<tam;x++) { if (cad[x]=='a') conta++; if (cad[x]=='e') conte++; if (cad[x]=='i') conti++; if (cad[x]=='o') conto++; if (cad[x]=='u') contu++; } //Imprime las veces que ocurre cada vocal seguido de asteriscos printf("\n a %d ",conta); for (x=1; x<=conta;x++) printf("*"); printf("\n e %d ",conte); for (x=1; x<=conte;x++) printf("*"); printf("\n i %d ",conti); for (x=1; x<=conti;x++) printf("*"); printf("\n o %d ",conto); for (x=1; x<=conto;x++) printf("*"); printf("\n u %d ",contu); for (x=1; x<=contu;x++) printf("*"); getch(); return 0; }

Docente: NEGRETE CARHUARICRA, Lisbeth

Pgina 11

GLab 01

ELEMENTOS DE LA COMPUTACION

EJERCICIO 6. Completo (Utilizando un solo arreglo y corrimiento)


#include <stdio.h> #include <stdlib.h> #include <strings.h> int main() { char cad[100]; int x,y; printf("Ingrese el texto :"); gets(cad); for (x=0;x<strlen(cad);x++) //strlen usa strings.h { //Evaluar para cada vocal if (cad[x]=='A') { //Para realizar corrimiento de derecha a izquierda for (y=x;y<strlen(cad);y++) { cad[y]=cad[y+1]; } //Retrocede X para volvera verificar la posicion x--; } if (cad[x]=='E') { //Para realizar corriento de derecha a izquierda for (y=x;y<strlen(cad);y++) { cad[y]=cad[y+1]; } //Retrocede X para volvera verificar la posicion x--; } if (cad[x]=='I') { //Para realizar corriento de derecha a izquierda for (y=x;y<strlen(cad);y++) { cad[y]=cad[y+1]; } //Retrocede X para volvera verificar la posicion x--; } if (cad[x]=='O') { //Para realizar corriento de derecha a izquierda for (y=x;y<strlen(cad);y++) { cad[y]=cad[y+1]; Docente: NEGRETE CARHUARICRA, Lisbeth
Pgina 12

GLab 01

ELEMENTOS DE LA COMPUTACION } //Retrocede X para volvera verificar la posicion x--; } if (cad[x]=='U') { //Para realizar corriento de derecha a izquierda for (y=x;y<strlen(cad);y++) { cad[y]=cad[y+1]; } //Retrocede X para volvera verificar la posicion x--; } } //fin del for principal

printf("La cadena es: %s ",cad); getch(); return 0; }

Docente: NEGRETE CARHUARICRA, Lisbeth

Pgina 13

GLab 01

ELEMENTOS DE LA COMPUTACION

EJERCICIO 6: COMPLETO (usando dos arreglos, mas corto y entendible) #include <stdio.h> #include <stdlib.h> #include <strings.h> #include <conio.h> int main() { char cad[100]; char sinvoc[100]; int x,y; printf("Ingrese el texto en MAYUSCULAS:"); gets(cad); y=0; //Inicializa el contador para el arreglo sinmay for (x=0;x<strlen(cad);x++) { //Evaluar para cada vocal if ((cad[x]=='A')||(cad[x]=='E')||(cad[x]=='I')||(cad[x]=='O')||(cad[x]=='U')); else //En el caso de que no sea una vocal { sinvoc[y]=cad[x]; y++; //Actualiza a la nueva posicin para sinvoc } } //fin del for principal //Cerrar la cadena sinvoc sinvoc[y]='\0'; printf("\nLa cadena real es: %s ",cad); printf("\nLa cadena sin vocales es: %s ",sinvoc); getch(); return 0; }

Docente: NEGRETE CARHUARICRA, Lisbeth

Pgina 14

También podría gustarte