Ahora con nuevo dominio, para que tu acceso a la página sea mas fácil.   www.cmasmas.es.mn

-----------------------------------------------------------

CADENAS

Lectura de cadenas.

C++ al igual que la mayoría de los lenguajes de programación tienen funciones que permiten la entrada/salida de cadenas de caracteres por pantalla/teclado.

La salida de caracteres en C++ se realiza, usando cout<<cadena.

En cuanto a la lectura de caracteres, se tiene varias opciones:

1.  cin.get();: Lee carácter a carácter.

Uso del cin.getline.

2.  Uso del método estándar de entrada, es decir, cin:  tiene dos problemas:

-La cadena es leída hasta que se encuentre ENTER, ESPACIO o TABULADOR.  Esto hace que se puedan perder datos, por ejemplo, si una persona tiene dos nombres, al usar cin>>nombre, se estaría perdiendo el segundo de ellos.

-Lo que no se ha leído, se queda almacenado en el buffer del teclado, por que no queremos que se mezcle con las otras lecturas debemos ignorarlo.  Ese es el motivo de la sentencia cin.ignore(Número de caracteres, carácter separador).  Carácter separador ENTER.

3.  Uso de cin.getline():  Permite leer una cadena de caracteres hasta un número máximo de caracteres.

Sintaxis:

cin.getline(Nombre cadena, LongitudCadena, carácter separador);

Explicación:

getline es una función que permite que cin lea una línea completa incluyendo cualquier espacio en blanco.  Adiciona automáticamente el carácter nulo '\0' y el carácter final de línea '\n'

Ejemplo con el carácter nulo de una cadena.

NombeCadena es el nombre de la cadena donde se almacena la cadena ingresada por teclado.

LongitudCanena es la longitud máxima de la cadena (debe definirla con dos espacios demás para que permita el carácter '\0' y '\n').

-----------------------------------------------------------

Ejemplo de un programa sobre cadenas.

#include<iostream.h>
#include<conio.h>
main()
{
clrscr();
char nombre[30];/*Define la cadena nombre de 30 caracteres.*/
cout<<"\n\tDIGITE NOMBRE Y APELLIDO: ";/*Mensaje.*/
cin.getline(nombre,30);/*Lee una cadena y la almacena en nombre.*/
cout<<"\n\n\tLa cadena leída y almacenada es: "<<nombre<<endl;/*Muestra la
cadena leída.*/

getch();
return 0;
}

Programa, ejemplo sobre cadenas.

-----------------------------------------------------------

Funciones para manejar cadenas.

Las librerías para trabajar con cadenas son: <string.h>, <ctype.h>

FUNCIONES DE LA LIBRERIA ESTANDAR PARA TRABAJAR CON CADENAS:

Hay bastantes funciones para manejar cadenas, aquí se expondrán algunas de las mas conocidas y frecuentes.

ASIGNACIÓN DE CADENAS

1.  strcpy (cadenaDestino , CadenaFuente ):  copia el contenido de una cadenaFuente en cadenaDestino.

Ejemplo:

char letras = "abcdef \0"; //letras es una cadena que contiene los caracteres asignados.

char cadena[10]; //cadena es una cadena de 10 caracteres.

strcpy(cadena,letras); //copia la cadena letras en la cadena cadena.

CONCATENAR CADENAS

2.  strcat(cadenaDestino,cadenFuente):  Concatenar cadenas, añade la cadenaFuente a la cadenaDestino.

Ejemplo:

char cadena="abcdefghi";

char masletr="jklmnop";

strcat(cadena,masletr); //se pega a cadena la tira masletr, quedando así:

cadena=abcdefghijklmnop

3.  strlen( ):  Entrega el número de caracteres de una cadena.  Excluye el \0:

variable=strlen(string):

int longitud;

char animal="caballo \0";

longitud =strlen (animal);

Código que muestra un ejemplo de como centrar una cadena de caracteres, utilizando la función strlen.

4.  strcmp( ):  Compara el orden alfabético de dos cadenas, sin tener en cuenta si se tienen mayúsculas y minúsculas:

Ejemplo:

int comp;

comp=strcmp(cadena1,cadena2);

Los dos argumentos son las tiras que se desean comparar y el resultado es un número que es:

NEGATIVO si la cadena1 es < que la cadena2

ES CERO si las dos cadenas son iguales

ES POSITIVO si la cadena 1 es > que la cadena2, es decir va después en el orden alfabético.

5.  strchr( ):  Para encontrar un carácter en una cadena.   El primer argumento es la tira de caracteres y el segundo el carácter que se desea buscar en ella, el resultado es un puntero que indica la primera ocurrencia del carácter en la tira.

char *ptr;

char cadena[20];

char c='j';

ptr=strchr (cadena,c);

6.  atoi ( ):  Convierte la tira de caracteres en valor entero.

int prim;

char tira [2];

prim = atoi (tira);

7.   itoa( ):  Convierte un entero en una cadena de caracteres:

Ejemplo:

itoa(num,tira,10):   num es un número entero, tira es la cadena de caracteres en la que se va a convertir el número, y 10 la base la base en la que se quiere mostrar el número vonvertido en la tira de caracteres.

8.  isdigit( ):  Determina si el argumento es un dígito (0-9).

9.  islower( ):  Determina si el argumento es una letra minúscula (a-z).

10.  isupper( ):  Determina si le argumento es una letra mayúscula (A-Z).

11.  tolower( ):  Convierte una letra mayúscula a minúscula.

12. toupper( ):  Convierte una letra minúscula a mayúscula.

Uso de toupper(), cinget().

Ir a inicio de página.

-----------------------------------------------------------

Aquí se mostrará un ejemplo del "cin.getline", este programa pide que se introduzca un texto y luego cuenta las a, e, i, o y u que hallan en el texto.

#include<conio.h>
#include<iostream.h>
#include<string.h>
void main()
{
int I,tama, conta,conte,conti,conto,contu;
char texto[100];/*El texto no puede tener mas de 100 caracteres.*/
clrscr();/*Borrado de pantalla.*/
textcolor(BLUE);textbackground(MAGENTA);clrscr();/*Colores a texto y fondo y borrado de pantalla.*/
cprintf("\n Entrar texto:");/*Este "cprintf" es lo mismo que el "cout", solo se coloca para que el compilador reciba la orden de colocar el color a el texto, el "cout" no recibe esta orden.*/
cin.getline(texto,100);/*Si se coloca solo el "cin", al momento de leer y llevar a memoria el texto leído, solo se llevara a memoria lo que hay antes del primer espacio, lo que quiere decir que el "cin" solo no puede leer oraciones o párrafos, solo palabras.*/
conta=0,conte=0,conti=0,conto=0,contu=0;/*Se deben inicializar los contadores en cero.*/
tama=strlen(texto);/*strlen devuelve el número de caracteres que contiene la variable texto*/
for(I=0; I<=(tama-1); I++)/*I-->Indice para revisar cada una de los caracteres del texto, el índice va desde la primera posición hasta n-1. (En la mayoría de los casos los índices van desde cero hasta n-1).*/
{
if(texto[I]=='a')/*En cada uno de estos if, se identifica si el carácter de la posición del índice corresponde a una vocal, si es así, se incrementa un contador, (un contador para cada vocal).*/
{
conta=conta+1;
}
if(texto[I]=='e')
{
conte=conte+1;
}
if(texto[I]=='i')
{
conti=conti+1;
}
if(texto[I]=='o')
{
conto=conto+1;
}
if(texto[I]=='u')
{
contu=contu+1;
}
}
cout<<endl<<endl<<"aes="<<conta;/*Con estos "cout" se muestra la cantidad de cada vocal que aparecen el texto ingresado.*/
cout<<endl<<"ees="<<conte;
cout<<endl<<"ies="<<conti;/*Endl, pasa a siguiente línea.*/
cout<<endl<<"oes="<<conto;
cout<<endl<<"ues="<<contu;
getch();/*Detiene ejecución del programa.*/
}

Programa que muestra un ejemplo del "cin.getline", este programa pide que se introduzca un texto y luego cuenta las a, e, i, o y u que hallan en el texto.

-----------------------------------------------------------

Programa que devuelve la cadena ingresada, pero al contrario.  Ejemplo:  Si se ingresó carolina, el programa devolverá anilorac

Programa que determina si una palabra es palíndrome.

Uso de toupper(), tolower(), strcpy(), strcmp().

contar las consonantes vocales dígitos signos de puntuación mayúsculas minúsculas y espacios de una frase.

Se ingresa una cadena.  Muestra su longitud.  Muestra la cadena en forma inversa.  Muestra cada caracter dos veces.

Programa que pide el ingreso de nombres (cadenas), luego se busca uno de los nombres ingresados y se indica la posición en que se encuentra el nombre buscado.

Se pide un nombre, si es igual al de la clave da autorización para entrar, sino, no da autorización.

-----------------------------------------------------------

Si encuentras algún error en las temas aquí explicados, te rogamos el favor nos lo hagas saber.

-----------------------------------------------------------

Empresa amiga-->   Tecsicom®