Anda di halaman 1dari 28

Una cadena de caracteres es un array unidimensional en el cual todos sus elementos son tipo char. Ejem.

:
char Obs[]=Aprobado; char color[]={g,r,i,s,\0}; 0 1 2 3 4 5 6 7 8

CADENAS

\0

\0, es el carcter nulo en el cual c++ finaliza todas las cadenas de caracteres. char Obs[3]=Descontado; //Error porque el tamao de la cadena es menor que lo declarado. Cuando declare una variable tipo cadena, debe tener en consideracin al carcter nulo (\0) en la longitud mxima de la cadena. La declaracin de un vector de cadenas tiene la forma tal como se indica. Char nProducto[30][15]; // Declara a nProducto como un vector de 30 elementos y la longitud de la cadena es de 15 caracteres
ALGORITMOS Y PROGRAMACIN

CADENAS
La declaracin anterior del vector de cadena se mostrara as.
longitud de 15 0 1 2 ... 29
ALGORITMOS Y PROGRAMACIN

FUNCIONES DE CADENAS
El c++ nos proporcionan muchas funciones estandares de cadena que nos permite hacer operaciones con cadenas. Las siguientes funciones requieren de la librera string.h Funcin strcpy() strcpy(c1,c2); Permite copiar la cadena c2 en c1, lo cual implica que el contenido original de c1 se pierde. char c1[]=Programa;char c2[]=Algoritmos; strcpy(c1,c2); // el contenido de c1 ser Algoritmos
3

ALGORITMOS Y PROGRAMACIN

FUNCIONES DE CADENAS
Funcin strncpy()
strncpy(c1,c2,n);

Permite copiar los n primeros caracteres de la cadena c2 en c1, lo cual implica que el contenido original de c1 se pierde.

Funcin strcat()
strcat(c1,c2);

Permite concatenar la cadena c2 en c1, es decir la longitud de la cadena c1 aumentara. char c1[]=Programa;strcat(c1,Algoritmos); // el contenido de c1 ser ProgramaAlgoritmos
4

ALGORITMOS Y PROGRAMACIN

FUNCIONES DE CADENAS
Funcin strncat()
strncat(c1,c2,n);

Permite concatenar los n primeros caracteres de la cadena c2 en c1, lo cual implica que el contenido original de c1 aumenta.

Funcin strcmp()
strcmp(c1,c2);

Permite comparar la cadena c1 y c2, la funcin puede devolver 0, si la cadena c1 es igual a c2, 1 si la cadena c1 es mayor que c2 o -1 si la cadena c1 es menor que c2.

ALGORITMOS Y PROGRAMACIN

FUNCIONES DE CADENAS
Funcin strncmp()
strncmp(c1,c2,n);

Permite comparar hasta n caracteres de c1 con la cadena c2, la funcin puede devolver 0, si la porcin de cadena c1 es igual a c2, 1 si la porcin de la cadena c1 es mayor que c2 o -1 si la porcin de la cadena c1 es menor que c2.

Funcin strupr()
strupr(c);

Permite convertir la cadena c a maysculas.

Funcin strlwr()
strlwr(c);

Permite convertir la cadena c a minsculas.


ALGORITMOS Y PROGRAMACIN

FUNCIONES DE CADENAS
Funcin strset()
strset(c1,c);

Permite sustituir todos los caracteres de c1 por el carcter c, excepto el carcter \0.

Funcin strchr()
strchr(c,c1);

Esta funcin devuelve un puntero de la primera ocurrencia del caracter c1 en la cadena c, o un valor NULL si el carcter no es encontrado.

Funcin strrchr()
strrchr(c,c1);

Esta funcin devuelve un puntero de la ultima ocurrencia del caracter c1 en la cadena c, o un valor NULL si el carcter no es encontrado.
ALGORITMOS Y PROGRAMACIN

FUNCIONES DE CADENAS
Funcin strnset()
strnset(c1,c,n);

Permite reemplazar los n primeros caracteres de c1 por el carcter c.

Funcin strlen()
strlen(c);

Esta funcin devuelve la longitud de la cadena c.

Funcin strtok()
strtok(c1,c);

Esta funcin divide una cadena en una serie de tokens. Un tokens es una secuencia de caracteres separados por delimitadores. c es el carcter delimitador.
ALGORITMOS Y PROGRAMACIN

FUNCIONES DE CADENAS
Funcin strcmpi()
strcmpi(c1,c2);

Permite comparar la cadena c1 y c2, la funcin puede devolver 0, si la cadena c1 es igual a c2, 1 si la cadena c1 es mayor que c2 o -1 si la cadena c1 es menor que c2. No hace distincin entre maysculas y minsculas.

Funcin strstr()
strstr(c1,c2);

Esta funcin devuelve un puntero de la primera ocurrencia de la cadena c2 dentro de la cadena c1, o NULL si c2 no se encuentra en la cadena c1.
ALGORITMOS Y PROGRAMACIN

FUNCIONES DE CADENAS
Las siguientes funciones requieren de la librera stdlib.h Funcin atoi() atoi(c); Convertir una cadena numrica a un numero entero.

Funcin atol()
atol(c); Convertir una cadena numrica a un numero entero largo. Funcin atof() atof(c); Convertir una cadena numrica a un numero flotante.
ALGORITMOS Y PROGRAMACIN

10

FUNCIONES DE CADENAS
Las siguientes funciones requieren de la librera stdio.h y iostream.h Funcin gets() gets(c); Lee una cadena y lo almacena en la variable c.

Funcin puts()
puts(c); Permite escribir la cadena c, automticamente hace el cambio de lnea. Funcin cin.getline() cin.getline(c,n); Lee una cadena y lo almacena en la variable c.
ALGORITMOS Y PROGRAMACIN

11

FUNCIONES DE CARACTER
Para usar estas funciones se requiere la librera ctype.h Funcin isalpha()
isalpha(c);

Verifica si c es un carcter alfabtico que esta comprendido entre A..Z o a..z, de ser as devuelve verdadero, caso contrario falso.

Funcin isdigit()
isdigit(c);

Verifica si c es un digito (09) si es verdad devuelve verdadero, caso contrario retorna falso.

ALGORITMOS Y PROGRAMACIN

12

FUNCIONES DE CARACTER
Funcin isupper()
isupper(c);

Verifica si c es un carcter alfabtico que esta comprendido entre A..Z, de ser as devuelve verdadero, caso contrario falso.

Funcin islower()
islower(c);

Verifica si c es un carcter alfabtico que esta comprendido entre az, si es verdad devuelve verdadero, caso contrario retorna falso.

Funcin tolower()
tolower(c);

Convierte el carcter c de maysculas a minsculas.


ALGORITMOS Y PROGRAMACIN

13

FUNCIONES DE CARACTER
Funcin toupper() toupper(c); Convierte el carcter c de minsculas a maysculas. Funcin toascii() toascii(c); Devuelve el cdigo Ascii del carcter c. Funcin ispunct() ispunct(c); Devuelve verdadero si carcter es un carcter de puntuacion. Funcin isalnum() isalnum(c); Devuelve verdadero si c es un carcter alfanumrico.
ALGORITMOS Y PROGRAMACIN

14

FUNCIONES DE CARACTER
Requieren de la Librera stdio.h y iostream.h Funcion getchar() Variable=getchar(); Captura un carcter, no e necesario presionar la tecla enter. Funcin putchar() putchar(c); Escribe el carcter c. Funcin cin.get() cin.get(c); Permite leer un carcter cualquiera.
ALGORITMOS Y PROGRAMACIN

15

FUNCIONES DE CADENAS
#include <iostream> #include <string.h> using namespace std; int main() { char c[]="Relaciones entre los objetos en una jerarqua de herencia"; char *d, p, cad[20], c1[10],c2[10]; int n; cout<<c<<endl; cout<<"Caracter:"; cin>>p; cout<<"Cadena:";fflush(stdin);gets(cad); cout<<"Ingrese cadena 1:";gets(c1); cout<<"Ingrese cadena2:";gets(c2); n=strcmp(c1,c2);

ALGORITMOS Y PROGRAMACIN

16

FUNCIONES DE CADENAS
if(n==0) cout<<"Las cadenas son exactamente iguales"<<endl; else if(n>0) cout<<"\""<<c1<<"\" es mayor que "<<"\""<<c2<<"\""<<endl; else cout<<"\""<<c1<<"\" es menor que "<<"\""<<c2<<"\""<<endl; for(d=strtok(c," ");d!=NULL;) { cout<<d<<endl; d=strtok(NULL," "); } cout<<endl; cout<<strnset(c,'*',3)<<endl;

ALGORITMOS Y PROGRAMACIN

17

FUNCIONES DE CADENAS
if(isalnum(p)) cout<<p<<" es un caracter alfanumerico"<<endl; if(isalpha(p)) cout<<p<<" es un caracter entre A..Z, o a...z"<<endl; else if(isdigit(p)) cout<<p<<" Es un digito que esta entre 0..9"<<endl; else if(ispunct(p)) cout<<p<<" Es un caracter de puntuacion"<<endl; cout<<cad<<" como numero entero es "<<atoi(cad)<<endl; cout<<endl;
system("pause"); }
ALGORITMOS Y PROGRAMACIN

18

FUNCIONES DE CADENAS

ALGORITMOS Y PROGRAMACIN

19

PROBLEMAS CON CADENAS


// Programa que usa las funciones strchr, strrchr,strstr y strcmpi #include <string.h> #include <iostream> using namespace std; int main() { char string[15], cad[15]; char *p,*q,*r, c; cout<<"Ingrese cadena:";gets(string); cout<<"Ingrese caracter a buscar:";cin>>c; p = strchr(string, c);
ALGORITMOS Y PROGRAMACIN

20

PROBLEMAS CON CADENAS


if(p==NULL)
cout<<"El caracter \""<<c<<"\" no se encuentra en \""<<string<<"\"\n\n";

else { cout<<"\nLa cadena al cual apunta es:"<<p<<endl; cout<<"\nLa cadena original es:"<<string<<endl;
cout<<"\nEl caracter "<<c<<" se encuentra en la posicion "<<pstring<<endl;

} cout<<"\nIngrese caracter a buscar:";cin>>c; q = strrchr(string, c);

ALGORITMOS Y PROGRAMACIN

21

PROBLEMAS CON CADENAS


if(q==NULL)
cout<<"El caracter \""<<c<<"\" no se encuentra en \""<<string<<"\"\n\n";

else { cout<<"\nLa cadena al cual apunta es:"<<q<<endl; cout<<"\nLa cadena original es:"<<string<<endl;
cout<<"\nEl caracter "<<c<<" se encuentra en la posicion "<<q-string<<endl;

cout<<endl; } cout<<"\nIngrese cadena:"; fflush(stdin);gets(cad);

ALGORITMOS Y PROGRAMACIN

22

PROBLEMAS CON CADENAS


if(strcmpi(string,cad)==0) cout<<"\""<<string<<"\" es igual a \""<<cad<<"\""<<endl; else if(strcmpi(string,cad)>0) cout<<"\""<<string<<"\" es mayor que \""<<cad<<"\""<<endl; else cout<<"\""<<string<<"\" es menor que \""<<cad<<"\""<<endl; r = strstr(string,cad); if(r==NULL) cout<<"La cadena \""<<cad<<"\" no se encuentra en \""<<string<<"\"\n\n"; else { cout<<"\nLa cadena al cual apunta es:"<<r<<endl; cout<<"\nLa cadena original es:"<<string<<endl; cout<<"\nLa cadena "<<cad<<" se encuentra en la posicion "<<r-string<<endl; }
ALGORITMOS Y PROGRAMACIN

23

PROBLEMAS CON CADENAS


strset(cad,'&'); cout<<"\nAhora la cadena es:"<<"\""<<cad<<"\""<<endl<<endl; strnset(string,'*',5); cout<<"\nAhora la cadena es:"<<"\""<<string<<"\""<<endl<<endl; system("PAUSE"); }

ALGORITMOS Y PROGRAMACIN

24

PROBLEMAS CON CADENAS


/* Implementar la siguiente funcion: int GeneraVectorCadena( char c[],char nC[N][M], char car) donde C es la cadena original, nC es el vector de cadenas a generar y car es un caracter alfabetico cualquiera. Implementar la funcion que genere el vector cuyo contenido sean las palabras que empiezan con el caracter car y que devuelva la cantidad de elementos de dicho vector. */ #include <iostream> #include <string.h> const int N=254,M=254; using namespace std; int GeneraVectorCadena( char c[],char nC[N][M], char car) { int i=0,x,p=0,j=0; char k[254]; strcat(c," ");

ALGORITMOS Y PROGRAMACIN

25

PROBLEMAS CON CADENAS


while((c[i]!=' ') && (c[i]!='\0')) { x=c[i]; if(x==car) { while(c[i]!=' ') { k[j]=c[i]; j++;i++; } k[j] ='\0'; strcpy(nC[p],k);k[0] ='\0'; j=0; p++; } else while(c[i]!=' ') i++; i++; } return p; }
ALGORITMOS Y PROGRAMACIN

26

PROBLEMAS CON CADENAS


// Funcion que muestra el vector de cadena void VerVector(char nC[N][M],int m) { int i; for(i=0;i<m;i++) cout<<"nC["<<i<<"]="<<nC[i]<<endl; }

ALGORITMOS Y PROGRAMACIN

27

PROBLEMAS CON CADENAS


//programa principal int main() { int n; char cadena[N],nuevaC[N][M],letra; cout<<"Cual es la cadena....? :"<<endl; cin.getline(cadena,N); cout<<"Ingrese el caracter..? :";cin>>letra; n=GeneraVectorCadena( cadena,nuevaC,letra); if(n!=0) {VerVector(nuevaC,n);cout<<endl<<"Tiene "<<n<<" elementos"<<endl;} else cout<<"\a\nVector no generado..."<<endl; system("pause"); }
ALGORITMOS Y PROGRAMACIN

28

Anda mungkin juga menyukai