Está en la página 1de 10

1/10

GUIA DE LABORATORIO Nº03


CADENAS
OBJETIVOS

Al finalizar esta práctica el usuario estará capacitado en realizar lo siguiente:

1. Crear una variable cadena


2. Declarar una variable cadena y asignar datos
3. Uso de funciones predefinidas para manejo de cadenas
4. Crear funciones de cadena definidas por el programador.

Ejem 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;
//Definicion de las funciones
void Leer(char c[]);
{ cout<<"Ingrese su nombre completo ";
cin>>nombre;
}

void Print( char c[])


{ cout<<"Hola, "<<c<<endl;
}

//Funcion principal
int main()
{ char nombre[35];
Leer(nombre); Print(nombre);
}

Ejem 2
/*uso de funciones para leer caracteres y cadenas en c++ se utiliza cin.get y
cin.getline respectivamente */

#include<iostream>
using namespace std;
//Definicion de las funciones
void Input(char c[])
{ cout<<"Ingrese una cadena ";
cin.getline(c,25);
}

Algoritmos y programación Ing. Félix Huari Evangelista


2/10

void Print( char c[])


{ cout<<"La cadena leida es = "<<c<<endl;
}

//Funcion principal
int main()
{ char cadena[25];
Input(cadena);
Print(cadena);
}

Ejem 3
/* En C++ se utiliza cin.get para leer un caracter */
#include<iostream>
using namespace std;
int LeerCaracter()
{ char x;
cout<<"Ingrese un caracter ";
cin.get(x);
return x;
}

void Print( char x)


{ cout<<"El caracter es "<<x<<endl;
}

int main()
{ char c;
c=LeerCaracter();
Print(c);
}

Ejem 4
/* Las cadenas también se pueden leer y escribir haciendo uso de las funciones
gets() y puts() ambas de la libreria stdio */
#include<iostream>
#include <stdio.h>
using namespace std;
//Definicion de funciones
void Entrada(char x[])
{ cout<<"Ingrese sus nombres y apellidos: ";
gets(x);
}

Algoritmos y programación Ing. Félix Huari Evangelista


3/10

void VerDatos(char x[])


{ cout<<"Hola, ";
puts(c);
cout<<endl;
}

//Funcion principal
int main()
{ char c[30];
Entrada(c);
VerDatos(c);
}

Ejem 5
/* muestra como una cadena de caracteres es tratada como un array
unidimensional */
#include<iostream>
using namespace std;
//Definicion de las funciones
void CaracterPorCaracter(char c[])
{ int i; //imprimiendo cadena como un array de caracteres
cout<<"La cadena con un espacio entre caracteres:\n\n";
for(i=0; c[i]!='\0'; i++)
cout<<c[i]<<" ";
cout<<endl;
}

//Funcion principal
int main()
{ char cadena[]="ALGORITMOS Y ESTRUCTURA DE DATOS";
CaracterPorCaracter(cadena);
}

Ejem 6
//uso de las funciones strcpy y strncpy
#include <iostream>
#include <string.h>
using namespace std;
//Definicion de la function
void OperaFunciones()
{ char x[]="Universidad Nacional Mayor de San Marcos";
char y[40],z[40]; cout<<"El string en el array x es -> "<<x<<endl;
cout<<"\nEl string en el array x copiado hacia el array y es ->\n"<<strcpy(y,x);
strncpy(z,x,8);
z[8]='\0'; //marca de fin de cadena
cout<<"\nParte del string en el array x copiado al array z es ->\n"<<z<<endl;

Algoritmos y programación Ing. Félix Huari Evangelista


4/10

cout<<z<<endl;
}

//Funcion principal
int main()
{
OperaFunciones();
}

Ejem 7
//uso de las funciones strcat y strncat
#include <iostream>
#include <string.h>
using namespace std;
//Definicion de las funciones
void Procesar(char s1[], char s2[],char s3[])
{ strcat(s1,s2); cout<<"Concatenar s2 en s1: ";
cout<<endl<<s1;
cout<<endl; cout<<"\nConcatenar s3 en s1: "; strcat(s1,s3);
cout<<endl<<s1;
cout<<endl; cout<<"Parte de la s3 concatenada en s2: "; strncat(s2,s3,10);
cout<<endl<<s2<<endl;
}

//Funcion principal
int main()
{ char x1[100]="Con todo lo bueno que";
char x2[]=" significa heredar una biblioteca,";
char x3[]=" mejor aun es reunirla - Agustine Birrel";
Procesar(x1, x2,x3);
}

Ejem 8
#include <iostream>
#include <string.h>
using namespace std;
/* editor de texto sencillo que lee una cadena y cuenta el numero de palabras en
ella */
//Defenicion de las funciones
void Read(char c[])
{ int i=0;
cout<<"Ingrese linea de texto> ";
while((c=cin.get())!='\n')
linea[i++] = c;
linea[i++]='\0';
}

Algoritmos y programación Ing. Félix Huari Evangelista


5/10

void ContarPalabras(char línea[])


{ int numpal=i=0; char blanco=' ', c,sig;
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<<"\nLa linea de texto tiene "<<numpal<<" palabras"<<endl;
}

//Funcion principal
int main()
{ char lineas[80];
Read(lineas);
ContarPalabras(lineas);
}

Ejem 9
#include <iostream>
#include <string.h>
using namespace std;
/* uso de strcmp()*/
int main()
{
char cade1[]="lenguaje C++";
char cade2[]="LENGUAJE C++";
char cade3[]="lenguaje C++";
char cade4[]="LENGuaje c++";
int result; //almacena resultado de la comparacion
//comparar cadena 1 con cadena 2
result = strcmp(cade1,cade2);
if (result<0)
cout<<cade1<<" es menor que "<<cade2<<endl;
else if (result==0)
cout<<cade1<<" es igual que "<<cade2<<endl;
else
cout<<cade1<<" es mayor que "<<cade2<<endl;
cout<<result<<endl;
//comparar cadena 1 con cadena 3
result = strcmp(cade1,cade3);

Algoritmos y programación Ing. Félix Huari Evangelista


6/10

if (result<0)
cout<<cade1<<" es menor que "<<cade3<<endl;
else if (result==0)
cout<<cade1<<" es igual que "<<cade3<<endl;
else
cout<<cade1<<" es mayor que "<<cade3<<endl;
cout<<result<<endl<<endl;
//comparar cadena 1 con cadena 4
result = strcmp(cade4,cade1);
if (result<0)
cout<<cade4<<" es menor que "<<cade1<<endl;
else if (result==0)
cout<<cade4<<" es igual que "<<cade1<<endl;
else
cout<<cade4<<" es mayor que "<<cade1<<endl;
cout<<result<<endl;
}

Ejem 10
#include <iostream>
using namespace std;
int main()
{
char s[]="Estructura de Datos";
int i; cout<<"Cadena impresa con espacios en blanco entre caracteres: "<<endl;
for (i=0; i<sizeof(s)/sizeof(char); i++)
cout<<s[i]<<" "; cout<<'\0'<<endl;
}

Ejem 11
#include <iostream>
#include <string.h> // para strupr() y strlwr()
#include <stdio.h>
int main()
{
char cade1[40], cade2[40];
cout<<"Ingrese Cadena en minusculas: ";
gets(cade1); strupr(cade1); cout<<"A mayusculas ";
puts(cade1); cout<<endl; cout<<"Ingrese Cadena en Mayusculas ";
gets(cade2); strlwr(cade2); cout<<"A minusculas: ";
puts(cade2);
cout<<endl;
}

Algoritmos y programación Ing. Félix Huari Evangelista


7/10

Ejem 12
#include <iostream>
#include <string.h>
using namespace std;
const int N=254;
void LeerCadena(char c[])
{ cout<<"\nCual es la cadena"<<endl;
gets(c);
}

void PalabaBuscar(char c1[])


{ cout<<"\nCual es la palabra a buscar:";
gets(c1);cout<<endl;
}
void NumeroVeces(char clave[],int m)
{ cout<<"\n"<<clave<<" aparece en la cadena "<<m<<" veces"<<endl;
cout<<endl;
}

bool BuscarPalabra(char c[],char clave[N],int &k)


{ int i=0,j=0;
k=0;
char p[M];
strcat(c," ");
while(c[i]!='\0')
{ if(c[i]!=' ')
{ p[j]=c[i];
j++;
}
else
{ p[j]='\0';
if(strcmp(p,clave)==0)
k++;
j=0; strcpy(p,"");
}
i++;
}
if(k!=0)
return true;
else
return false;
}
// programa principal
int main()
{ char cad[N],clave[N];
int num; bool q;

Algoritmos y programación Ing. Félix Huari Evangelista


8/10

LeerCadena(cad);
PalabaBuscar(clave);
q=BuscarPalabra(cad,clave,num);
if(q==true)
NumeroVeces(clave,num);
else
cout<<clave<<" no esta contenida en la cadena"<<endl;
cout<<endl;
}

Ejem 13
#include<iostream>
#include<string.h>
using namespace std;
const int N=80;
//Definicion de las funciones
void LeerCadena(char c[])
{ cout<<endl;
cout<<"Cual es la cadena:";
cin.getline(c,60);
}

void Print(char c[])


{ cout<<endl;
cout<<"La cadena es :"<<c<<endl;
cout<<endl;
}

void EliminarEspacio(char c[])


{ int i=0,j=0; char x[N];
while(c[i]!='\0')
{ if(c[i]!=' ')
{ x[j]=c[i];
j++;
}
i++;
}
x[j]='\0';strcpy(c,x);
}
// Funcion principal
int main()
{ char a[N];
LeerCadena(a);
Print(a); EliminarEspacio(a); Print(a);
}

Algoritmos y programación Ing. Félix Huari Evangelista


9/10

Ejem 14
#include <iostream>
using namespace std;
const int MAX=80;
// funciones prototipo
int longcad(char s[]);
int comparacad(char s1[], char s2[]);
void copiacad(char dest[], char orig[]);
int main()
{
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,Programacion) = ";
cout<<comparacad(buffer,"Programacion")<<endl;
}

//Definiendo las funciones de usuario


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];
dest[i]=0;
}

Algoritmos y programación Ing. Félix Huari Evangelista


10/10

EJERCICIOS PROPUESTOS
1. Escribir un programa que permita el ingreso de una palabra, para luego verificar si
es una palabra polindroma. Una palabra es polindroma si al leer por la izquierda y
por la derecha es la misma. Ejm. radar, oso, etc.

2. Escribir un programa que acepte como entrada un texto para luego escribir
el número de veces que se repite las letras del abecedario y genere un
gráfico de barra horizontal, para graficar usar el carácter “*”.
3. Para el problema anterior verificar cuantas palabras existen de 1 letra, 2
letra, 3 letras, etc., para posteriormente presentar el grafico de barra
horizontal.
4. En base al problema 2, necesitamos saber el número de veces que se
repite cada palabra, luego presentar el grafico respectivo.
5. Escribir un programa que acepte la entrada de un numero entero positivo,
para luego mostrar el mismo en letras.
6. Escribe un programa en C++ que, al recibir como dato una cadena que
contienen números reales, obtenga la suma y el promedio de dichos
números. Implementar las funciones necesarias y la función main.
7. Dado una cadena cualquiera que está formado por una serie de palabras y
separado por un espacio en blanco. Implementar un programa que
intercambie la palabra que tiene la mayor longitud con la palabra que tiene
menor longitud. Finalmente mostrar la cadena después de haber realizado
esta operación. Asumir que cada palabra tiene longitudes diferentes. No
está permitido el uso de funciones predeterminadas.

Algoritmos y programación Ing. Félix Huari Evangelista

También podría gustarte