Sunteți pe pagina 1din 30

21/10/2012

Ing. Edgar Ruiz Lizama

21/10/2012

Una cadena es una sarta de caracteres la cual en esencia es un array unidimensional.

CADENAS

Formato basico:
<char> <identificador> [ <dimension> ] Ejemplo:
char nombre[20]; // nombre hasta 20 caracteres.

en este caso el compilador asignar la marca de fin de cadena \0 al ltimo de la cadena nombre. char nombre[20] = JULISA ;

'J' 'U' 'L' 'I' 'S' 'A' \0


0 1 2 3 4 5 6
Ing. Edgar Ruiz Lizama

21/10/2012

En cambio en la siguiente declaracin char nombre [ ] = {J u l i s a}; el compilador no asigna la marca de fin de cadena al objeto nombre. El objeto cin permite leer cadenas; pero slo hasta que encuentra un espacio en blanco. ejemplo:
nombre

R O S A

A L V A R E Z

char nombre[20]; cout<<ingrese nombre; cin>>nombre; // Rosa Alvarez cout<< nombre <<endl; //Rosa

Si se quiere leer una cadena completa, debe usarse la funcin miembro cin.getline; tal como cingetline (nombre, 20);
Ing. Edgar Ruiz Lizama

21/10/2012

FUNCIONES DE MANEJO DE CADENAS


C++ posee en la librera string.h una gran variedad de funciones para el manejo de cadenas. a) strlen().- Funcin que devuelve la cantidad de caracteres que existen en una cadena antes del carcter nulo. b) strupr().- Funcin que permite convertir una cadena a maysculas c) strlwr().- Funcin que permite convertir una cadena a minsculas

d) strcpy (destino, origen).- Funcin que permite copiar el valor de una cadena (cadena origen) a otra (cadena destino).
Ing. Edgar Ruiz Lizama

21/10/2012

e) strncpy (destino, origen, cantidad).- Funcin que permite copiar el numero de caracteres especificados por cantidad de la cadena origen hacia la cadena destino. f) strcat (destino, origen).- Funcin que permite concatenar dos cadenas. Una copia de la cadena origen se aade al final de la cadena destino. g) strncat (destino, origen, cantidad).- Funcin que realiza la operacin de concatenacin pero para un nmero de caracteres. h) strcmp().- Funcin que permite comparar dos cadenas de caracteres. Devuelve 0 si las cadenas comparadas son iguales y otro valor en caso contrario.
Ing. Edgar Ruiz Lizama

APLICACIONES

21/10/2012

Ejemplo 1: /*el identificador cin tambin lee cadenas pero termina o trunca la cadena al encontrar el primer espacio en blanco*/ #include <iostream> using namespace std; int main(void)//cadena0.cpp { char nombre[35]; cout<<"ingrese su nombre completo: "; cin>>nombre; cout<<"Hola, "<<nombre<<endl; return 0;

}
Ing. Edgar Ruiz Lizama

21/10/2012

EJECUCION DEL PROGRAMA:

Ing. Edgar Ruiz Lizama

21/10/2012

Eemplo 2: //uso de funciones para leer caracteres y cadenas //en C++ se utiliza cin.get y cin.getline respectivamente
#include <iostream> usung namespace std; int main(void) //cadena1.cpp { char c; cout<<"ingrese un caracter "; cin.get(c); cout<<"El caracter es "<<c<<endl; return 0; }

Ing. Edgar Ruiz Lizama

21/10/2012

EJECUCION DEL PROGRAMA:

Ing. Edgar Ruiz Lizama

10

21/10/2012

Ejemplo 3: //uso de las funciones strcpy y strncpy #include <iostream> #include <string.h> using namespace std; int main()//cadena3.cpp { char x[]="Algoritmos y Programacion"; char y[30],z[30]; cout<<"El string en el array x es -> "<<x; cout<<"\nEl string en el array x copiado hacia el array y es -> " <<strcpy(y,x); strncpy(z,x,12); z[12]='\0'; cout<<"Parte del string en el array x copiado al array z es ->" <<z<<endl; return 0; }

Ing. Edgar Ruiz Lizama

11

21/10/2012

EJECUCION DEL PROGRAMA:

Ing. Edgar Ruiz Lizama

Ejemplo 4:
#include <iostream>
#include <string.h> using namespace std; int main() //cadena4.cpp

12

21/10/2012

//uso de las funciones strcat y strncat

{
char s1[256]="En aquel tiempo, respondiendo Jess, dijo: Te alabo, Padre, Seor del cielo y "; char s2[]=" de la tierra, porque escondiste estas cosas de los sabios y "; char s3[]="de los entendidos, y las revelaste a los nios. Mateo 11,25-26"; cout<<" s1 = "<<s1<<endl<<endl; cout<<" s2= "<<s2<<endl<<endl;

Ing. Edgar Ruiz Lizama

13

21/10/2012

... Continua
strcat(s1,s2); cout<<"\nConcatenar s2 en s1: ";

cout<<endl<<"s1= "<<s1;
cout<<endl; cout<<"\nS3= "<<s3; cout<<"\nConcatenar s3 en s1: ";

strcat(s1,s3);
cout<<endl<<"\ns1= "<<s1; cout<<endl<<endl; cout<<"\nParte de la s3 concatenada en s2: ";

strncat(s2,s3,10);
cout<<endl<<s2<<endl<<endl; return 0; }
Ing. Edgar Ruiz Lizama

14

21/10/2012

EJECUCION DEL PROGRAMA:

Ing. Edgar Ruiz Lizama

15

21/10/2012

//editor de texto sencillo que lee una cadena y //cuenta el numero de palabras en ella #include <iostream> using namespace std; int main() //cadena5.cpp { char linea[80],c,sig, blanco; int i=0, numpal; //lectura de la linea de texto cout<<"ingrese linea de texto> "; while ((c=cin.get())!='\n') { linea[i++]=c; } linea [i++]='\0'; // conteo de palabras numpal=i=0; blanco=' '; c=linea[i]; //comienzo de la cadena //recorrido de la cadena while (c) { if (c!=blanco) { sig=linea[i+1]; if ((sig==blanco) || (sig=='\0')) ++numpal; } c=linea[++i]; } cout<<"Texto -> "<<linea<<"\nTiene "<<numpal<<" palabras"<<endl;

return 0;
Ing. Edgar Ruiz Lizama

16

21/10/2012

EJECUCION DEL PROGRAMA

Ing. Edgar Ruiz Lizama

17

21/10/2012

// Escribe el nombre ingresado caracter por caracter #include <iostream>

using namespace std;


int main()// cadena7.cpp { char s[]="juan jose"; int i; for (i=0 ; i<sizeof(s)/sizeof(char); i++) cout<<s[i]<<endl; return 0; }

Ing. Edgar Ruiz Lizama

18

21/10/2012

EJECUCION DEL PROGRAMA:

Ing. Edgar Ruiz Lizama

19

21/10/2012

// Utilizacion strcpy y strcat. #include <iostream> #include <string.h> using namespace std; int main(void) { char destino[25]; char *blanco = " ", *c = "C++", "mingw32-g++"; strcpy(destino, Compilador); strcat(destino, blanco); strcat(destino, c); cout<<destino<<endl; return 0; }

*Compilador =

Ing. Edgar Ruiz Lizama

20

21/10/2012

EJECUCION DEL PROGRAMA:

Ing. Edgar Ruiz Lizama

21

21/10/2012

/*muestra como el usuario puede definir sus propias funciones de cadena */ #include <iostream> //version 1 const int MAX = 80;//funciones prototipo int longcad(char s[]); int comparacad(char s1[], char s2[]); void copiacad(char dest[], char orig[]); using namespace std; int main() //funcads1.cpp { char buffer[MAX]; buffer[0]='\0'; cout<<"<1> longcad(buffer)= "<<longcad(buffer)<<endl; copiacad(buffer, "Algoritmos y Programacion"); cout<<"<2> buffer: "<<buffer<<endl; cout<<"<3> longcad(buffer)= "<<longcad (buffer)<<endl; cout<<"<4> comparacad(buffer, Algoritmos y Programacion)= "; cout<<comparacad(buffer,"Algoritmos y Programacion")<<endl ; cout<<"<5> comparacad(buffer, Algoritmos)= "; cout<<comparacad(buffer, "Programacion")<<endl;

return 0;
}

- Continua Ing. Edgar Ruiz Lizama

22

21/10/2012

int longcad(char s[]) { int i=0; while (s[i]!=0) ++i; return i; } int comparacad(char s1[], char s2[]) { int i=0; for ( ; s1[i]!=0 && s1[i]==s2[i]; i++) ; return (int)(s1[i]-s2[i]); } void copiacad(char dest[], char orig[]) { int i=0; for( ; orig[i]!=0 ; i++) dest[i]=orig[i]; //asignar a dest el caracter de orig dest[i]=0; - Fin } Ing. Edgar Ruiz Lizama

23

21/10/2012

EJECUCION DEL PROGRAMA:

Ing. Edgar Ruiz Lizama

24

21/10/2012

/*muestra como el usuario puede definir sus propias funciones de cadena usa punteros al array de cadena. Version 2 */ #include <iostream> const int MAX = 80; //funciones prototipo int longcad(char *s); int comparacad(char *s1, char *s2); void copiacad(char *dest, char *orig); using namespace std; int main() //funcads2.cpp { char buffer[MAX]; buffer[0]='\0'; cout<<"<1> longcad(buffer)= "<<longcad(buffer)<<endl; copiacad(buffer, "Algoritmos y Programacion"); cout<<"<2> buffer: "<<buffer<<endl; cout<<"<3> longcad(buffer)= "<<longcad (buffer)<<endl; cout<<"<4> comparacad(buffer, Algoritmos y Programacion)= "; cout<<comparacad(buffer,"Algoritmos y Programacion")<<endl ; cout<<"<5> comparacad(buffer, Algoritmos)= "; cout<<comparacad(buffer, "Algoritmos")<<endl; return 0;

- Continua -

Ing. Edgar Ruiz Lizama

25

21/10/2012

int longcad(char *s) { int i=0; while (s[i]!=0) ++i; return i; } int comparacad(char *s1, char *s2) { int i=0; for( ; s1[i]!=0 && s1[i]==s2[i]; i++) ; return (int)(s1[i]-s2[i]); } void copiacad(char *dest, char *orig) { int i=0; for( ; orig[i]!=0 ; i++) dest[i]=orig[i]; //asignar a dest el caracter de orig dest[i]=0; Ing. Edgar Ruiz Lizama - Fin }

26

21/10/2012

EJECUCION DEL PROGRAMA:

Ing. Edgar Ruiz Lizama

27

21/10/2012

//funciones prototipo. Version 3 #include <iostream> const int MAX=80;//funciones prototipo int longcad(char *s); int comparacad(char *s1, char *s2); void copiacad(char *dest, char *orig); using namespace std; using namespace std; int main() //funcads3.cpp { char buffer[MAX]; buffer[0]='\0'; cout<<"<1> longcad(buffer)= "<<longcad(buffer)<<endl; copiacad(buffer, "Algoritmos y Programacion"); cout<<"<2> buffer: "<<buffer<<endl; cout<<"<3> longcad(buffer)= "<<longcad (buffer)<<endl; cout<<"<4> comparacad(buffer, Algoritmos y Programacion)= "; cout<<comparacad(buffer,"Algoritmos y Programacion")<<endl; cout<<"<5> comparacad(buffer, Algoritmos)= "; cout<<comparacad(buffer, "Algoritmos")<<endl; return 0; }

- Continua -

Ing. Edgar Ruiz Lizama

28

21/10/2012

int longcad(char *s) { int i=0; while(*s++) ++i; return i; } int comparacad(char *s1, char *s2) { while( *s1 && *s1 ==*s2) { s1++; s2++; } return (int)(*s1 - *s2); } void copiacad(char *dest, char *orig) { while(*dest++ = *orig++) ; - Fin }

Ing. Edgar Ruiz Lizama

29

21/10/2012

EJECUCION DEL PROGRAMA

Ing. Edgar Ruiz Lizama

30

21/10/2012

REFERENCIAS

Deitel H.M. y Deitel P.J., (1995). Como Programar en C/C++ ". Mxico, 2da. ed. Prentice Hall: 927p. Ruiz Lizama Edgar, (2009). Programacin con C++ ". Peru, 1ra. ed. Fondo Editorial UNMSM: 434p. Schildt Herbert C Manual de Referencia Espaa. 4ta. Edicin, Osborne McGraw-Hill (2000) 709p. Stroustrup, Bjarne "El Lenguaje de Programacin C++". U.S.A. Addison Wesley Iberoamericana. 710 p. (1993). Stroustrup, Bjarne "El Lenguaje de Programacin C++ Edicin especial". Espaa. Addison Wesley PEARSON EDUCACION S.A. 1050 p. (2002)
Ing. Edgar Ruiz Lizama

S-ar putea să vă placă și