Documente Academic
Documente Profesional
Documente Cultură
21/10/2012
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 ;
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
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
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; }
21/10/2012
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; }
11
21/10/2012
Ejemplo 4:
#include <iostream>
#include <string.h> using namespace std; int main() //cadena4.cpp
12
21/10/2012
{
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;
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
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
17
21/10/2012
18
21/10/2012
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 =
20
21/10/2012
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;
}
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
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 -
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
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 -
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 }
29
21/10/2012
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