0% encontró este documento útil (0 votos)
164 vistas39 páginas

Cadenas CPP 15 1

Este documento describe cadenas y funciones para manipular cadenas en C++. Explica que una cadena es un array unidimensional de caracteres que termina en el carácter nulo. Presenta funciones como strlen() para obtener la longitud de una cadena, strcpy() para copiar una cadena, y strcat() para concatenar cadenas. También incluye ejemplos de código que ilustran el uso de cadenas y estas funciones para tareas como leer entrada, contar palabras y manipular cadenas caracter por caracter.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
164 vistas39 páginas

Cadenas CPP 15 1

Este documento describe cadenas y funciones para manipular cadenas en C++. Explica que una cadena es un array unidimensional de caracteres que termina en el carácter nulo. Presenta funciones como strlen() para obtener la longitud de una cadena, strcpy() para copiar una cadena, y strcat() para concatenar cadenas. También incluye ejemplos de código que ilustran el uso de cadenas y estas funciones para tareas como leer entrada, contar palabras y manipular cadenas caracter por caracter.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

22/04/2018

1 Mg. Edgar Ruiz Lizama


2 22/04/2018

CADENAS
Una cadena es una sarta de caracteres la cual en esencia es un
array unidimensional.
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 Mg. Edgar Ruiz Lizama
3 22/04/2018

En cambio en la siguiente declaración


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 sólo 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 función miembro


cin.getline; tal como
cingetline (nombre, 20);
Mg. Edgar Ruiz Lizama
4 22/04/2018

FUNCIONES DE MANEJO DE CADENAS


C++ posee en la librería string.h una gran variedad de funciones para el
manejo de cadenas.

a) strlen().- Función que devuelve la cantidad de caracteres que existen en


una cadena antes del carácter nulo.

b) strupr().- Función que permite convertir una cadena a mayúsculas

c) strlwr().- Función que permite convertir una cadena a minúsculas

d) strcpy (destino, origen).- Función que permite copiar el valor de una


cadena (cadena origen) a otra (cadena destino).

Mg. Edgar Ruiz Lizama


5 22/04/2018

e) strncpy (destino, origen, cantidad).- Función que permite copiar el


numero de caracteres especificados por cantidad de la cadena origen hacia
la cadena destino.

f) strcat (destino, origen).- Función que permite concatenar dos cadenas.


Una copia de la cadena origen se añade al final de la cadena destino.

g) strncat (destino, origen, cantidad).- Función que realiza la operación de


concatenación pero para un número de caracteres.

h) strcmp().- Función que permite comparar dos cadenas de caracteres.


Devuelve 0 si las cadenas comparadas son iguales y otro valor en caso
contrario.

Mg. Edgar Ruiz Lizama


6 22/04/2018
APLICACIONES
Ejemplo 1:
/*el identificador cin también 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;
}

Mg. Edgar Ruiz Lizama


7 22/04/2018

EJECUCION DEL PROGRAMA:

Mg. Edgar Ruiz Lizama


8 22/04/2018

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;
}

Mg. Edgar Ruiz Lizama


9 22/04/2018

EJECUCION DEL PROGRAMA:

Mg. Edgar Ruiz Lizama


10 22/04/2018

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;
}

Mg. Edgar Ruiz Lizama


11 22/04/2018

EJECUCION DEL PROGRAMA:

Mg. Edgar Ruiz Lizama


12 22/04/2018
Ejemplo 4:
//uso de las funciones strcat y strncat
#include <iostream>
#include <string.h>
using namespace std;
int main() //cadena4.cpp
{
char s1[256]="En aquel tiempo, respondiendo Jesús, dijo: Te
alabo, Padre, Señor 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 niños.
Mateo 11,25-26";
cout<<" s1 = "<<s1<<endl<<endl;
cout<<" s2= "<<s2<<endl<<endl;

Mg. Edgar Ruiz Lizama


13 22/04/2018
... 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;
}
Mg. Edgar Ruiz Lizama
14 22/04/2018

EJECUCION DEL PROGRAMA:

Mg. Edgar Ruiz Lizama


15 22/04/2018
//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;
} Mg. Edgar Ruiz Lizama
16 22/04/2018

EJECUCION DEL PROGRAMA

Mg. Edgar Ruiz Lizama


17 22/04/2018

// 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;
}

Mg. Edgar Ruiz Lizama


18 22/04/2018

EJECUCION DEL PROGRAMA:

Mg. Edgar Ruiz Lizama


19 22/04/2018

// Utilizacion strcpy y strcat.

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

Mg. Edgar Ruiz Lizama


20 22/04/2018

EJECUCION DEL PROGRAMA:

Mg. Edgar Ruiz Lizama


21 22/04/2018

/*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 -
Mg. Edgar Ruiz Lizama
}
22 22/04/2018

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 -
} Mg. Edgar Ruiz Lizama
23 22/04/2018

EJECUCION DEL PROGRAMA:

Mg. Edgar Ruiz Lizama


24 22/04/2018

/*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 - Mg. Edgar Ruiz Lizama


}
25 22/04/2018

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 - Mg. Edgar Ruiz Lizama
26 22/04/2018

EJECUCION DEL PROGRAMA:

Mg. Edgar Ruiz Lizama


27 22/04/2018

//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 - Mg. Edgar Ruiz Lizama


}
28 22/04/2018

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 -
} Mg. Edgar Ruiz Lizama
29 22/04/2018

EJECUCION DEL PROGRAMA

Mg. Edgar Ruiz Lizama


30 22/04/2018

Ejemplo:
Programa que solicita una cadena de caracteres y presenta un
reporte de la cantidad de cada vocal que existe en la cadena.

Diseño Top – Down para el programa

Mg. Edgar Ruiz Lizama


Código C++ 31 22/04/2018

#include <iostream>
#include <stdio.h>
#define N 255

// Declaracion del prototipo de las funciones


void IngresarCadena(char cad[]);
void ReportarVocales(char cad[]);
using namespace std;
int main()
{
char frase[N];
IngresarCadena(frase);
ReportarVocales(frase);
return 0;
}

// Definicion de las funciones prototipo


void IngresarCadena(char cad[])
{
cout << "Ingrese una cadena: ";
gets(cad); Mg. Edgar Ruiz Lizama
}
32 22/04/2018

void ReportarVocales(char cad[])


{ // Declarando los contadores de vocales
int ca, ce, ci, co, cu;
ca = ce = ci = co = cu = 0;
// analizar la cadena
int i = 0;
while (cad[i] != '\0')
{ switch(cad[i]){
case 'a': ca++;
break;
case 'e': ce++;
break;
case 'i': ci++;
break;
case 'o': co++;
break;
case 'u': cu++;
}
i++;
}
// Imprimiendo el reporte
cout << "\na = "<< ca << endl;
cout << "e = "<< ce << endl;
cout << "i = "<< ci << endl;
cout << "o = "<< co << endl; Mg. Edgar Ruiz Lizama
cout << "u = "<< cu << endl;
}
33 22/04/2018

Una ejecución del programa

EJERCICIO:
Modificar el programa para que también considere las vocales
en Mayúsculas-
Mg. Edgar Ruiz Lizama
34 22/04/2018

Ejemplo:
Programa que cuenta la cantidad de vocales fuertes y débiles
que existen en una cadena.

Diseño Top – Down para el programa

Mg. Edgar Ruiz Lizama


35 22/04/2018

Código C++ del programa


#include <iostream>
#define N 255

// Declaracion del prototipo de las funciones


bool EsVocalFuerte(char c);
bool EsVocalDebil(char c);
bool EsDelAlfabeto(char c);
void CuentaVocalesFuertesyDebiles(char cad[]);

using namespace std;


int main()
{
char frase[N];
cout << "Ingrese cadena: ";
cin.getline(frase, N);
CuentaVocalesFuertesyDebiles(frase);
return 0;
} Mg. Edgar Ruiz Lizama
36 22/04/2018

// Definicion de las funciones


bool EsVocalFuerte(char c)
{
switch (c)
{
case 'a': case 'e': case 'o':
case 'A': case 'E': case 'O':
return true;
}
return false;
}
bool EsVocalDebil(char c)
{
switch (c)
{
case 'i': case 'u':
case 'I': case 'U':
return true;
}
return false; Mg. Edgar Ruiz Lizama
}
37 22/04/2018
bool EsDelAlfabeto( char c )
{ if ((c >= 'a' && c <= 'z')||(c >= 'A' && c <= 'Z'))
return true;
else
return false;
}
void CuentaVocalesFuertesyDebiles( char cad[] )
{ // Declarando contadores
int cFuer = 0;
int cDebi = 0;
int i = 0;
while (cad[i] != '\0')
{ if (EsDelAlfabeto(cad[i]))
{ if (EsVocalFuerte(cad[i]))
cFuer++;
if (EsVocalDebil(cad[i]))
cDebi++;
}
i++;
}
// Presentando la salida o reporte
cout << "\nCantidad vocales fuertes: " << cFuer << endl;
cout << "\nCantidad vocales debiles: " << cDebi << endl;
Mg. Edgar Ruiz Lizama
}
38 22/04/2018

Una ejecución del programa

 EJERCICIO:
Añadir una función que cuente la cantidad de
consonantes que existen en la cadena.
Mg. Edgar Ruiz Lizama
39 22/04/2018

REFERENCIAS
 Deitel H.M. y Deitel P.J., (2009). “Como Programar en
C/C++ ". México, 2da. ed. Prentice Hall: 927p.
 Ruiz Lizama Edgar, (2009). “Programación con C++ ".
Peru, 1ra. ed. Fondo Editorial UNMSM: 434p.
 Schildt Herbert “C Manual de Referencia” España.
4ta. Edición, Osborne McGraw-Hill (2000) 709p.
 Stroustrup, Bjarne "El Lenguaje de Programación C++".
U.S.A. Addison Wesley Iberoamericana. 710 p. (1993).
 Stroustrup, Bjarne "El Lenguaje de Programación C++
Edición especial". España. Addison Wesley –
PEARSON EDUCACION S.A. 1050 p. (2002)

Mg. Edgar Ruiz Lizama

También podría gustarte