Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
CADENAS
5/15/17
CADENAS
Una cadena es una sarta de caracteres la cual en esencia es un
array unidimensional.
Formato basico:
Ejemplo:
char nombre[20]; // nombre hasta 20 caracteres.
El objeto cin permite leer cadenas; pero slo hasta que encuentra un espacio
en blanco.
ejemplo:
no mb re 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
APLICACIONES
Ejemplo
Ejemplo 1:
1:
/*el
/*el identificador
identificador cin
cin tambin
tambin lee
lee cadenas
cadenas pero
pero termina
termina oo
trunca
trunca la
la cadena
cadena al
al encontrar
encontrar el
el primer
primer espacio
espacio en
en
blanco*/
blanco*/
#include
#include <iostream>
<iostream>
using
using namespace
namespace std;
std;
int
int main(void)//cadena0.cpp
main(void)//cadena0.cpp
{{
char
char nombre[35];
nombre[35];
cout<<"ingrese
cout<<"ingrese su
su nombre
nombre completo:
completo: ";
";
cin>>nombre;
cin>>nombre;
cout<<"Hola,
cout<<"Hola, "<<nombre<<endl;
"<<nombre<<endl;
return
return 0;
0;
}}
Eemplo
Eemplo 2:
2:
//uso
//uso de funciones
de funciones para
para leer
leer caracteres
caracteres yy cadenas
cadenas
//en
//en C++
C++ se
se utiliza
utiliza cin.get
cin.get yy cin.getline
cin.getline respectivamente
respectivamente
#include
#include <iostream>
<iostream>
usung
usung namespace
namespace std;
std;
int main(void) //cadena1.cpp
int main(void) //cadena1.cpp
{{
char
char c;
c;
cout<<"ingrese
cout<<"ingrese un
un caracter
caracter ";
";
cin.get(c);
cin.get(c);
cout<<"El
cout<<"El caracter
caracter es
es "<<c<<endl;
"<<c<<endl;
return
return 0;
0;
}}
Ejemplo
Ejemplo 3:
3:
//uso
//uso de las
de las funciones
funciones strcpy
strcpy yy strncpy
strncpy
#include
#include <iostream>
<iostream>
#include
#include <string.h>
<string.h>
using
using namespace
namespace std;
std;
int main()//cadena3.cpp
int main()//cadena3.cpp
{{
char
char x[]="Algoritmos
x[]="Algoritmos yy Programacion";
Programacion";
char y[30],z[30];
char y[30],z[30];
cout<<"El
cout<<"El string
string en
en el
el array
array xx es
es ->
-> "<<x;
"<<x;
cout<<"\nEl
cout<<"\nEl string en el array x copiado hacia
string en el array x copiado hacia el
el array
array yy es
es ->
-> ""
<<strcpy(y,x);
<<strcpy(y,x);
strncpy(z,x,12);
strncpy(z,x,12);
z[12]='\0';
z[12]='\0';
cout<<"Parte
cout<<"Parte del
del string
string enen el
el array
array xx copiado
copiado al
al array
array zz es
es ->"
->"
<<z<<endl;
<<z<<endl;
return
return 0;
0;
}}
//editor
//editor de de texto
texto sencillo
sencillo que
que lee
lee una
una cadena
cadena yy
//cuenta el numero de palabras
//cuenta el numero de palabras en ella en ella
#include
#include <iostream>
<iostream>
using
using namespace
namespace std;
std;
int main() //cadena5.cpp
int main() //cadena5.cpp
{{
char
char linea[80],c,sig,
linea[80],c,sig, blanco;
blanco;
int
int i=0, numpal;
i=0, numpal;
//lectura
//lectura de de la
la linea
linea de
de texto
texto
cout<<"ingrese
cout<<"ingrese linea de texto> ";
linea de texto> ";
while
while ((c=cin.get())!='\n')
((c=cin.get())!='\n')
{{
linea[i++]=c;
linea[i++]=c;
}}
linea
linea [i++]='\0';
[i++]='\0';
//
// conteo de
conteo de palabras
palabras
numpal=i=0;
numpal=i=0;
blanco='
blanco=' '; ';
c=linea[i];
c=linea[i]; //comienzo
//comienzo dede la
la cadena
cadena
//recorrido
//recorrido de de la
la cadena
cadena
while
while (c)
(c)
{{
if
if (c!=blanco)
(c!=blanco)
{{
sig=linea[i+1];
sig=linea[i+1];
if
if ((sig==blanco)
((sig==blanco) || || (sig=='\0'))
(sig=='\0'))
++numpal;
++numpal;
}}
c=linea[++i];
c=linea[++i];
}}
cout<<"Texto
cout<<"Texto -> -> "<<linea<<"\nTiene
"<<linea<<"\nTiene "<<numpal<<"
"<<numpal<<" palabras"<<endl;
palabras"<<endl;
return
return 0;
0;
}} Ing. Edgar Ruiz Lizama
16 5/15/17
//
// Escribe
Escribe el
el nombre
nombre ingresado
ingresado caracter
caracter por
por caracter
caracter
#include
#include <iostream>
<iostream>
using
using namespace
namespace std;
std;
int
int main()//
main()// cadena7.cpp
cadena7.cpp
{{
char
char s[]="juan
s[]="juan jose";
jose";
int
int i;
i;
for
for (i=0
(i=0 ;; i<sizeof(s)/sizeof(char);
i<sizeof(s)/sizeof(char); i++)
i++)
cout<<s[i]<<endl;
cout<<s[i]<<endl;
return
return 0;
0;
}}
//
// Utilizacion
Utilizacion strcpy
strcpy yy strcat.
strcat.
#include
#include <iostream>
<iostream>
#include
#include <string.h>
<string.h>
using
using namespace
namespace std;
std;
int
int main(void)
main(void)
{{
char
char destino[25];
destino[25];
char
char *blanco
*blanco == "" ",
", *c
*c == "C++",
"C++", *Compilador
*Compilador == "mingw32-g+
"mingw32-g+
+";
+";
strcpy(destino,
strcpy(destino, Compilador);
Compilador);
strcat(destino,
strcat(destino, blanco);
blanco);
strcat(destino,
strcat(destino, c);c);
cout<<destino<<endl;
cout<<destino<<endl;
return
return 0;
0;
}}
/*muestra
/*muestra como
como el
el usuario
usuario puede
puede definir
definir sus
sus propias
propias funciones
funciones de
de
cadena */
cadena */
#include
#include <iostream>
<iostream> //version
//version 11
const
const int
int MAX
MAX == 80;//funciones
80;//funciones prototipo
prototipo
int
int longcad(char
longcad(char s[]);
s[]);
int
int comparacad(char s1[],
comparacad(char s1[], char
char s2[]);
s2[]);
void
void copiacad(char dest[], char orig[]);
copiacad(char dest[], char orig[]);
using namespace std;
using namespace std;
int
int main()
main() //funcads1.cpp
//funcads1.cpp
{{
char
char buffer[MAX];
buffer[MAX];
buffer[0]='\0';
buffer[0]='\0';
cout<<"<1>
cout<<"<1> longcad(buffer)=
longcad(buffer)= "<<longcad(buffer)<<endl;
"<<longcad(buffer)<<endl;
copiacad(buffer,
copiacad(buffer, "Algoritmos
"Algoritmos yy Programacion");
Programacion");
cout<<"<2> buffer: "<<buffer<<endl;
cout<<"<2> buffer: "<<buffer<<endl;
cout<<"<3>
cout<<"<3> longcad(buffer)=
longcad(buffer)= "<<longcad
"<<longcad (buffer)<<endl;
(buffer)<<endl;
cout<<"<4>
cout<<"<4> comparacad(buffer, Algoritmos yy Programacion)=
comparacad(buffer, Algoritmos Programacion)= ";
";
cout<<comparacad(buffer,"Algoritmos
cout<<comparacad(buffer,"Algoritmos y Programacion")<<endl ;;
y Programacion")<<endl
cout<<"<5>
cout<<"<5> comparacad(buffer,
comparacad(buffer, Algoritmos)=
Algoritmos)= ";";
cout<<comparacad(buffer, "Programacion")<<endl;
cout<<comparacad(buffer, "Programacion")<<endl;
- Continua -
return
return 0;
0; Ing. Edgar Ruiz Lizama
}}
22 5/15/17
int
int longcad(char
longcad(char s[])
s[])
{{
int
int i=0;
i=0;
while
while (s[i]!=0)
(s[i]!=0)
++i;
++i;
return
return i;i;
}}
int
int comparacad(char
comparacad(char s1[],
s1[], char
char s2[])
s2[])
{{
int
int i=0;
i=0;
for
for ( ;; s1[i]!=0
( s1[i]!=0 &&
&& s1[i]==s2[i];
s1[i]==s2[i]; i++)
i++)
;;
return
return (int)(s1[i]-s2[i]);
(int)(s1[i]-s2[i]);
}}
void
void copiacad(char
copiacad(char dest[],
dest[], char
char orig[])
orig[])
{{
int
int i=0;
i=0;
for(
for( ;; orig[i]!=0
orig[i]!=0 ;; i++)
i++)
dest[i]=orig[i];
dest[i]=orig[i]; //asignar aa dest
//asignar dest el
el caracter
caracter de de orig
orig
dest[i]=0;
dest[i]=0; - Fin -
}} Ing. Edgar Ruiz Lizama
23 5/15/17
/*muestra
/*muestra como
como el
el usuario
usuario puede
puede definir
definir sus
sus propias
propias funciones
funciones de
de
cadena usa punteros al array de cadena. Version
cadena usa punteros al array de cadena. Version 2 */ 2 */
#include
#include <iostream>
<iostream>
const
const int
int MAX
MAX == 80;
80;
//funciones prototipo
//funciones prototipo
int
int longcad(char
longcad(char *s);
*s);
int
int comparacad(char *s1,
comparacad(char *s1, char
char *s2);
*s2);
void
void copiacad(char *dest, char *orig);
copiacad(char *dest, char *orig);
using namespace std;
using namespace std;
int
int main()
main() //funcads2.cpp
//funcads2.cpp
{{
char
char buffer[MAX];
buffer[MAX];
buffer[0]='\0';
buffer[0]='\0';
cout<<"<1>
cout<<"<1> longcad(buffer)=
longcad(buffer)= "<<longcad(buffer)<<endl;
"<<longcad(buffer)<<endl;
copiacad(buffer,
copiacad(buffer, "Algoritmos yy Programacion");
"Algoritmos Programacion");
cout<<"<2> buffer: "<<buffer<<endl;
cout<<"<2> buffer: "<<buffer<<endl;
cout<<"<3>
cout<<"<3> longcad(buffer)=
longcad(buffer)= "<<longcad
"<<longcad (buffer)<<endl;
(buffer)<<endl;
cout<<"<4>
cout<<"<4> comparacad(buffer, Algoritmos yy Programacion)=
comparacad(buffer, Algoritmos Programacion)= ";
";
cout<<comparacad(buffer,"Algoritmos
cout<<comparacad(buffer,"Algoritmos y Programacion")<<endl ;;
y Programacion")<<endl
cout<<"<5>
cout<<"<5> comparacad(buffer,
comparacad(buffer, Algoritmos)=
Algoritmos)= ";
";
cout<<comparacad(buffer, "Algoritmos")<<endl;
cout<<comparacad(buffer, "Algoritmos")<<endl;
return - Continua - Ing. Edgar Ruiz Lizama
return 0;
0;
}}
25 5/15/17
int
int longcad(char
longcad(char *s)*s)
{{
int
int i=0;
i=0;
while
while (s[i]!=0)
(s[i]!=0)
++i;
++i;
return
return i;i;
}}
int
int comparacad(char
comparacad(char *s1,*s1, char
char *s2)
*s2)
{{
int
int i=0;
i=0;
for(
for( ;; s1[i]!=0
s1[i]!=0 &&
&& s1[i]==s2[i];
s1[i]==s2[i]; i++)
i++)
;;
return
return (int)(s1[i]-s2[i]);
(int)(s1[i]-s2[i]);
}}
void
void copiacad(char
copiacad(char *dest,
*dest, char
char *orig)
*orig)
{{
int
int i=0;
i=0;
for(
for( ;; orig[i]!=0
orig[i]!=0 ;; i++)
i++)
dest[i]=orig[i];
dest[i]=orig[i]; //asignar aa dest
//asignar dest el
el caracter
caracter de de orig
orig
dest[i]=0;
dest[i]=0;
}} - Fin - Ing. Edgar Ruiz Lizama
26 5/15/17
//funciones
//funciones prototipo.
prototipo. Version
Version 33
#include
#include <iostream>
<iostream>
const
const int MAX=80;//funciones
int MAX=80;//funciones prototipo
prototipo
int
int longcad(char
longcad(char *s);
*s);
int
int comparacad(char
comparacad(char *s1,
*s1, char
char *s2);
*s2);
void
void copiacad(char *dest, char *orig);
copiacad(char *dest, char *orig);
using namespace std;
using namespace std;
using
using namespace
namespace std;
std;
int
int main()
main() //funcads3.cpp
//funcads3.cpp
{{
char
char buffer[MAX];
buffer[MAX];
buffer[0]='\0';
buffer[0]='\0';
cout<<"<1>
cout<<"<1> longcad(buffer)=
longcad(buffer)= "<<longcad(buffer)<<endl;
"<<longcad(buffer)<<endl;
copiacad(buffer,
copiacad(buffer, "Algoritmos
"Algoritmos yy Programacion");
Programacion");
cout<<"<2> buffer: "<<buffer<<endl;
cout<<"<2> buffer: "<<buffer<<endl;
cout<<"<3>
cout<<"<3> longcad(buffer)=
longcad(buffer)= "<<longcad
"<<longcad (buffer)<<endl;
(buffer)<<endl;
cout<<"<4>
cout<<"<4> comparacad(buffer, Algoritmos yy Programacion)=
comparacad(buffer, Algoritmos Programacion)= ";
";
cout<<comparacad(buffer,"Algoritmos y Programacion")<<endl;
cout<<comparacad(buffer,"Algoritmos y Programacion")<<endl;
cout<<"<5>
cout<<"<5> comparacad(buffer,
comparacad(buffer, Algoritmos)=
Algoritmos)= ";
";
cout<<comparacad(buffer, "Algoritmos")<<endl;
cout<<comparacad(buffer, "Algoritmos")<<endl;
return
return 0;
0; - Continua - Ing. Edgar Ruiz Lizama
}}
28 5/15/17
int
int longcad(char
longcad(char *s)*s)
{{
int
int i=0;
i=0;
while(*s++)
while(*s++)
++i;
++i;
return
return i;
i;
}}
int
int comparacad(char
comparacad(char *s1,*s1, char
char *s2)
*s2)
{{
while(
while( *s1
*s1 &&
&& *s1
*s1 ==*s2)
==*s2)
{{
s1++;
s1++;
s2++;
s2++;
}}
return
return (int)(*s1
(int)(*s1 -- *s2);
*s2);
}}
void
void copiacad(char
copiacad(char *dest,
*dest, char
char *orig)
*orig)
{{
while(*dest++
while(*dest++ == *orig++)
*orig++)
;; - Fin -
}} Ing. Edgar Ruiz Lizama
29 5/15/17
REFERENCIAS
Deitel H.M. y Deitel P.J., (2009). 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)