Vous êtes sur la page 1sur 14

CADENAS DE CARACTERES

UNIVERSIDAD NACIONAL DE TRUJILLO

DOCENTE

VIDAL MELGAREJO, ZORAIDA YANET

INTEGRANTES

CHUNQUE SALINAS, JOCSAN LLAXACONDOR ALAYO, JONATHAN

Computacin | 2013

NDICE

CONTENIDOS
1. 2. 3. 4. 5. 6. INTRODUCCIN DEFINICIN FUNCIONES DE CADENAS DE CARACTERES PRUEBA Y CONVERSIN DE CARACTERES EJERCICIOS PROPUESTOS REFERENCIAS BIBLIOGRFICAS

N PG.
01 02 03 05 06 11

CADENAS DE CARACTERES

1. INTRODUCCIN
Un conjunto de caracteres almacenados en un vector cobran un significado especial cuando forman par te d una palabra o frase; a estos vectores que normalmente almacenan un conjunto de caracteres con un significado propio se les conoce con el nombre de strings o cadenas de caracteres. Las cadenas de caracteres son tratadas de forma especial por los lenguajes de programacin permitiendo, principalmente, realizar operaciones de lectura y escritura directamente sobre la totalidad de sus elementos, en vez de elemento a elemento, como sucede con los vectores de nmeros (enteros o reales). En C++ existe un archivo de cabecera que contiene funciones especializadas para el tratamiento de cadenas de caracteres y que se denomina <string.h>.

2. DEFINICIN
Una cadena de caracteres es un vector de caracteres formando por una o varias palabras (o simplemente un conjunto de caracteres con significado propio) que finaliza con un carcter especial denominado carcter final de cadena y que se representa como una barra inclinada a ala izquierda seguida de un cero \0. Para crear, por ejemplo, una cadena de caracteres con la palabra hola sus elementos deberan ser: h datos[0] o datos[1] l datos[2] a datos[3] \0 datos[4]

Figura1: Cadena de caracteres que se almacenaran en memoria de la forma en que aparece en la Figura2. La declaracin de un vector que va a contener una cadena de caracteres es idntica a la de cualquier vector, teniendo simplemente la precaucin de reservar un elemento para indicar el fin de cadena \0. La declaracin de un vector que deba almacenar rango caracteres se realizara de la siguiente manera: char nombre_vector [rango+1]; La declaracin para la cadena anterior (Figura1), seria: char datos [5];

donde char es el tipo_dato carcter, datos es el nombre del vector y 5 el nmero de caracteres que contiene el vector (pudiendo ser cualquier carcter ASCII). En este caso rango tendr el valor 4, que correspondern a los cuatro caracteres que componen la palabra hola, y la dimensin del vector ser rango ms el carcter fin de cadena \0, en total 5 caracteres.

Direcciones #33 #34 #35 #36 #37

Nombres de variable datos[0] datos[1] datos[2] datos[3] datos[4]

Contenido de las variables h o l a \0

Figura2: Almacenamiento en memoria de una cadena de caracteres. Al declarar una cadena de caracteres, se le puede dar un valor inicial; por ejemplo: char ciudad [9]=valencia; En este caso, es el propio compilador el que se encarga de finalizar la cadena con el carcter \0. La funcin de las dobles comillas es indicar al compilador que los caracteres contenidos entre forman una cadena de caracteres terminada en \0 (sin necesidad de especificar explcitamente este carcter de fin de cadena). Por ejemplo, x representa una cadena de caracteres con dos caracteres la x y \0. El resultado de la declaracin anterior es equivalente a la instruccin: char ciudad [9] = (V,a,l,e,n,c,i,a,\0) Al declarar una cadena de caracteres y darle valores iniciales no es necesario, al igual que ocurra en el caso de los vectores numricos, indicar la dimensin del vector. Por ejemplo: char ciudad [ ] = Valencia;

3. FUNCIONES DE CADENAS DE CARACTERES


La utilizacin del tipo de cadenas presentadas proviene de lenguajes anteriores como el lenguaje C. este tipo de cadenas se puede utilizar en C++. Para facilitar las operaciones con este tipo antiguo de cadenas existen una serie de funciones provenientes del lenguaje C. Algunas de las ms interesantes son: STRCPY (Copiar cadenas) Se utiliza para copiar el contenido de una cadena original en una cadena de destino. Se puede usar para asignar una cadena a una variable de cadena. Su forma de uso es la siguiente:
void strcpy(cadena1, cadena2);

Ejemplo:
char cadena2[]=Computacion; char cadena1[80]; strcpy(cadena1,cadena2); cout<<La cadena 1 es: <<cadena1<<endl;

STRCMP (Comparar cadenas) Se utiliza para comparar 2 cadenas. Esta funcin devuelve cero si ambas cadenas son iguales, devuelve un nmero mayor que cero si la cadena 1 es mayor alfabticamente hablando que la cadena 2 y devuelve un nmero menor que cero si la cadena 1 es menor alfabticamente que la cadena 2. Su forma de uso es la siguiente:
int strcmp(cadena1, cadena2)

Ejemplo:
char cadena1[80],cadena2[80]; cout<<Ingrese primera cadena : ; cin>>cadena1; cout<<Ingrese segunda cadena: ; cin>>cadena2; if(strcmp(cadena1,caden2)==0) cout<<Las cadenas son iguales <<endl; else if(strcmp(cadena1,cadena2)>0) cout<<La cadena mayor es : <<cadena1<<endl; else cout<<La cadena mayor es : <<cadena2<<endl;

STRCAT (Concatenar cadenas) Agregar al final de la cadena 1 la cadena 2. Su forma de uso es: void strcat(cadena1,cadena2); Ejemplo:
char cadena1[]=arriba; char cadena2[]=peru; strcat(cadena1,cadena2); cout<<cadena resultante : <<cadena1<<endl;

STRLEN (Longitud de cadenas) Esta funcin devuelve la cantidad de caracteres que tiene la cadena. Su forma de uso es la siguiente: int strlen(cadena) Ejemplo:
char mensaje[]=computacin; cout<<La cadena <<mensaje<< caracteres <<endl; tiene <<strlen(mensaje)<<

STRREV Invierte la cadena de caracteres. Su forma de uso es la siguiente:


strrev(cadena);

Ejemplo:
char cadena[]=sistemas; strrev(cadena); cout<<Cadena al revs : <<cadena<<endl;

STRLWR Funcin que convierte a minsculas una cadena de caracteres. Ejemplo:


char frase[90]; cout<<Ingrese frase: ; cin.getline(frase,90); strlwr(frase); cout<<La frase en minsculas es : <<frase<<endl;

STRUPR Funcin que convierte a maysculas una cadena de caracteres. Ejemplo:


char frase[90]; cout<<Ingrese frase: ; cin.getline(frase,90); strupr(frase); cout<<La frase en maysculas es : <<frase<<endl;

4. PRUEBA Y CONVERSIN DE CARACTERES


Una biblioteca relacionada #include la cual contiene muchas funciones tiles para convertir y probar caracteres individuales. Las funciones ms comunes para revisar caracteres tienen los siguientes prototipos:

int isalnum(int c): Verdad si c es alfanumrico. int isalpha(int c): Verdad si c es una letra. int isascii(int c): Verdad si c es ASCII. int iscntrl(int c): Verdad si c es un caracter de control. int isdigit(int c): Verdad si c es un dgito decimal. int isgraph(int c): Verdad si c es un caracter imprimible, exceptuando el espacio en blanco. int islower(int c): Verdad si c es una letra minscula. int isprint(int c): Verdad si c es un caracter imprimible, incluyendo el espacio en blanco. int ispunct(int c): Verdad si c es un signo de puntuacin. int isspace(int c): Verdad si c es un espacio int isupper(int c): Verdad si c es una letra mayscula. int isxdigit(int c): Verdad si c es un dgito hexadecimal.
Las funciones para conversin de caracteres son: int toascii(int c): Convierte c a ASCII o un unsigned char de 7 bits, borrando los bits altos. int tolower(int c): Convierte la letra c a minsculas, si es posible. int toupper(int c): Convierte la letra c a maysculas, si es posible.

5. EJERCICIOS PROPUESTOS A) Crear una funcin para calcular el nmero de caracteres de una cadena.
#include<iostream> using namespace std; int numCaracteres(char []); int main() { char cadena[80]; cout<<"Ingrese cadena : "; cin.getline(cadena,80); cout<<"El numero de caracteres de "<<cadena<<" es :" <<numCaracteres(cadena)<<endl; system("pause"); return 0; } int numCaracteres(char cad[]) { int i=0; while(cad[i]!=0) i++; return i;

} B) Ingresar una cadena y reportar cada carcter de la cadena en una lnea.


#include<iostream> using namespace std; void reportarCaracterPorLinea(char []); int main() { char cadena[100]; cout<<"Ingrese cadena : "; cin.getline(cadena,100); reportarCaracterPorLinea(cadena); system("pause"); return 0; } void reportarCaracterPorLinea(char cad[]) { int i=0; for(i=0;cad[i]!=0;i++) cout<<cad[i]<<endl; }

C) Escribir una funcin para concatenar 2 cadenas de caracteres. Si tenemos dos cadenas cad1 y cad2 colocar todos los caracteres de cad2 al final de cad1. Si cad1=Arriba y cad2=Peru y concatenamos cad1 con cad2, al final cad1 es =ArribaPeru
#include<iostream> using namespace std; void concatenar(char [], char []); int main() { char cad1[100],cad2[100]; cout<<"Ingrese cadena1 : "; cin.getline(cad1,100); cout<<"Ingrese cadena 2 : "; cin.getline(cad2,100); concatenar(cad1,cad2); cout<<"Cadena 1 final : "<<cad1<<endl; system("pause"); return 0; } void concatenar(char cad1[], char cad2[]) { int i=0,j=0; while(cad1[i]!=0) i++; while(cad2[j]!=0) { cad1[i]=cad2[j]; i++; j++; } cad1[i]=0; }

D) Ingresar una fecha en los enteros da, mes y ao por da: 7 mes: 10 ao: 2011 y obtener una cadena por ejemplo: 07/10/2011
#include<iostream> using namespace std; void convertir(int , int , int ,char []); int main() { int d, m, a; char cadena[20]; cout<<"Ingrese dia : "; cin>>d; cout<<"Ingrese mes: "; cin>>m; cout<<"Ingrese ao : "; cin>>a; convertir(d,m,a,cadena); cout<<"La cadena convertida es : "<<cadena<<endl; system("pause"); return 0; } void convertir(int d, int m, int a,char cad[]) { cad[0] = 48 + d/10; cad[1] = 48 + d%10; cad[2]= '/'; cad[3] = 48 + m/10; cad[4] = 48 + m%10; cad[5]= '/'; cad[6]= 48 + a/1000; a=a%1000; cad[7]= 48 + a/100; a=a%100; cad[8]= 48 + a/10; cad[9]= 48 + a%10; cad[10]=0; }

E) Ingresar una cadena que representa la hora como por ejemplo: 12:20:35 y obtener en variables enteras la hora, minutos y segundos, h=12, m=20 y s=35.
#include<iostream> using namespace std; void obtenerEnteros(char [], int &,int &,int &); void reporte(int,int,int); int main() { char hora[100]; int h,m,s; cout<<"Ingrese (hh:mm:ss) : cin>>hora; obtenerEnteros(hora,h,m,s); reporte(h,m,s); system("pause"); return 0; }

";

void obtenerEnteros(char hora[], int &h, int &m,int &s) { h=(hora[0]-48)*10+(hora[1]-48); m=(hora[3]-48)*10+(hora[4]-48); s=(hora[6]-48)*10+(hora[7]-48); } void reporte(int h, int m, int s) { cout<<"Horas : "<<h<<endl; cout<<"Minutos: "<<m<<endl; cout<<"Segundos : "<<s<<endl; }

6) Escribir una funcin bool busca_caracter(char cad[], char c) que busque un carcter c en una cadena cad, devolviendo un valor lgico Cierto si lo encuentra y Falso en caso contrario.
#include<iostream> using namespace std; bool busca_caracter(char cad[], char c);

int main() { char cad[100],car; cout<<"Ingrese cadena de caracteres: "; cin.getline(cad,100); cout<<"Ingrese caracter a buscar: "; cin>>car; if(busca_caracter(cad,car)) cout<<"El caracter se encuentra en la cadena"<<endl; else cout<<"El caracter no se encuentra en la cadena"<<endl; system("pause"); return 0; } bool busca_caracter(char cad[], char c) { int i; for(i=0;cad[i]!=0;i++) { if(cad[i]==c) return true; } return false; }

10

8. REFERENCIAS BIBLIOGRFICAS: Didact, S.L. (2005). Cap. 10 Array y cadenas de caracteres. Manual de programacion lenguaje c++ (44 - 47). Madrid, Espaa: Editorial MAD. Pedro Alonso Jord, Fernando Garca Granada, Eva Onainda de la Rivaherrera. Cap. 8 Vectores de caracteres. Diseo e implementacin de programas en lenguaje C++ (239 262). Madrid, Espaa: I.S.B.N.

11

Vous aimerez peut-être aussi