Upload
carlos-n-valverde
View
120
Download
5
Embed Size (px)
Citation preview
07/04/2023
1 Ing. Edgar Ruiz Lizama
07/04/20232
CADENAS
Ing. Edgar Ruiz Lizama
Una cadena es una sarta de caracteres la cual en esencia es un array unidimensional.Formato basico:
en este caso el compilador asignará la marca de fin de cadena ‘\0’ al último de la cadena nombre.
<char> <identificador> [ <dimension> ]
'J' 'U' 'L' 'I'0
'S' 'A' \01 2 3 4 5 6
Ejemplo:char nombre[20]; // nombre hasta 20 caracteres.
char nombre[20] = “JULISA ”;
07/04/20233
Ing. Edgar Ruiz Lizama
En cambio en la siguiente declaraciónchar nombre [ ] = {‘J’ ‘ u’ ‘l’ ‘ i’ ‘s’ ‘ a’};
el compilador no asigna la marca de fin de cadena al objeto nombre.
char nombre[20];cout<<”ingrese nombre”;cin>>nombre; // Rosa Alvarezcout<< nombre <<endl; //Rosa
El objeto cin permite leer cadenas; pero sólo hasta que encuentra un espacio en blanco.ejemplo:
R O S A A Lnombre V A R E Z
Si se quiere leer una cadena completa, debe usarse la función miembro cin.getline; tal como
cingetline (nombre, 20);
07/04/20234
Ing. Edgar Ruiz Lizama
C++ posee en la librería string.h una gran variedad de funciones para el manejo de cadenas.
FUNCIONES DE 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).
07/04/20235
Ing. Edgar Ruiz Lizama
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.
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.
07/04/20236
Ing. Edgar Ruiz Lizama
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;}
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;}
07/04/20237
EJECUCION DEL PROGRAMA:
Ing. Edgar Ruiz Lizama
07/04/20238
Ing. Edgar Ruiz Lizama
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;}
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;}
07/04/20239
EJECUCION DEL PROGRAMA:
Ing. Edgar Ruiz Lizama
07/04/202310
Ing. Edgar Ruiz Lizama
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;}
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;}
07/04/202311
EJECUCION DEL PROGRAMA:
Ing. Edgar Ruiz Lizama
07/04/202312
Ing. Edgar Ruiz Lizama
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;
07/04/202313
Ing. Edgar Ruiz Lizama
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;
}
... Continua
07/04/202314
Ing. Edgar Ruiz Lizama
EJECUCION DEL PROGRAMA:
07/04/202315
Ing. Edgar Ruiz Lizama
//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;}
//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;}
07/04/202316
EJECUCION DEL PROGRAMA
Ing. Edgar Ruiz Lizama
07/04/202317
Ing. Edgar Ruiz Lizama
// 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;}
// 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;}
07/04/202318
EJECUCION DEL PROGRAMA:
Ing. Edgar Ruiz Lizama
07/04/202319
Ing. Edgar Ruiz Lizama
// 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;}
// 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;}
07/04/202320
EJECUCION DEL PROGRAMA:
Ing. Edgar Ruiz Lizama
07/04/2023
Ing. Edgar Ruiz Lizama
21
/*muestra como el usuario puede definir sus propias funciones de cadena */#include <iostream> //version 1const int MAX = 80;//funciones prototipoint 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; }
/*muestra como el usuario puede definir sus propias funciones de cadena */#include <iostream> //version 1const int MAX = 80;//funciones prototipoint 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 -
07/04/2023
Ing. Edgar Ruiz Lizama
22
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;}
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 -
07/04/202323
EJECUCION DEL PROGRAMA:
Ing. Edgar Ruiz Lizama
07/04/2023
Ing. Edgar Ruiz Lizama
24
/*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 prototipoint 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;}
/*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 prototipoint 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 -
07/04/2023
Ing. Edgar Ruiz Lizama
25
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;}
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 -
07/04/202326
EJECUCION DEL PROGRAMA:
Ing. Edgar Ruiz Lizama
07/04/2023
Ing. Edgar Ruiz Lizama
27
//funciones prototipo. Version 3#include <iostream>const int MAX=80;//funciones prototipoint 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;}
//funciones prototipo. Version 3#include <iostream>const int MAX=80;//funciones prototipoint 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 -
07/04/2023
Ing. Edgar Ruiz Lizama
28
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++) ;}
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 -
07/04/202329
EJECUCION DEL PROGRAMA
Ing. Edgar Ruiz Lizama
07/04/202330
REFERENCIAS Deitel H.M. y Deitel P.J., (1995). “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)
Ing. Edgar Ruiz Lizama