El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres...

15

Transcript of El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres...

Page 1: El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres es un vector de tipo char. char nombre[16]; 0 1 2 3.
Page 2: El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres es un vector de tipo char. char nombre[16]; 0 1 2 3.

El tipo de datos “cadena” no existe en C/C++.Lo que utilizamos para manipular cadenas de

caracteres es un vector de tipo char.char nombre[16];

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Aquí estamos definiendo una cadena de

caracteres de tamaño 16, lo que nos va a permitir guardar el nombre de una persona usando hasta 15caracteres ya que el último caracter se reserva para guardar el <enter> que hace el usuario al terminar de ingresar el nombre.

Este <enter> se guarda automáticamente con el símbolo \0

Page 3: El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres es un vector de tipo char. char nombre[16]; 0 1 2 3.

Se puede incializar una cadena de caracteres de 2 maneras:

char cadena[10]={‘M’, ‘a’, ‘r’, ‘i’, ‘a’};

O también:char cadena[10]=“Maria”;

Y también se puede así:char cadena[]=“Maria”;

En este caso la cadena toma la longitud 5 + 1 para el enter.

Page 4: El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres es un vector de tipo char. char nombre[16]; 0 1 2 3.

La diferencia entre un vector de caracteres y una

cadena de caracteres es que la cadena de caracteres

termina con el carácter ‘\0’ y el vector de caracteres no.

Las cadenas de caracteres se pueden leer con un cin>>

pero si hay espacios en blanco, la cadena se corta.

Por ejemplo, si ingreso la cadena “Hola qué tal” y la leo

con un cin>>, me lee únicamente la palabra “Hola”

Por eso para leer cadenas de caracteres, usamos gets()

Page 5: El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres es un vector de tipo char. char nombre[16]; 0 1 2 3.

gets() y puts() pertenecen a la biblioteca stdio.h

Ejemplochar cadena[20]; gets(cadena);

Para mostrar la cadena puedo utilizar puts() o cout<<

Si utilizo puts() me muestra la cadena y a continuación hace un <enter<

Si utilizo cout<< me muestra la cadena y puedo seguir escribiendo en la misma línea.

Page 6: El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres es un vector de tipo char. char nombre[16]; 0 1 2 3.

Por ejemplo:char nombre[20], apellido [20]; cout<<“Ingrese el nombre”; gets(nombre); cout<<“Ingrese el apellido”;gets(apellido);

puts(nombre);puts(apellido):cout<<nombre;cout<<apellido

Con los datos Maximiliano Súarez, la salida será:

Maximiliano SuárezMaximilianoSuárez

Page 7: El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres es un vector de tipo char. char nombre[16]; 0 1 2 3.

Matrices de cadenas de caracteres0123456789

Page 8: El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres es un vector de tipo char. char nombre[16]; 0 1 2 3.

Para guardar, por ejemplo los nombres de 10 alumnos, en lugar de definir 10 vectores de caracteres, lo que hacemos es definir una matriz de 10 filas por 16 columnas.

Las filas indican la cantidad de nombres que vamos a guardar y las columnas indican la cantidad máxima de caracteres que va a tener cada nombre.

Ej. char nombres [10][15];

10 nombres15 caracteres cada nombre

Page 9: El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres es un vector de tipo char. char nombre[16]; 0 1 2 3.

Para poder guardar un nombre en la matriz, tenemos que indicarle en qué fila vamos a guardarlo:

gets(nombres[0]); gets(nombres[1]); gets(nombres[2]); gets(nombres[3]); gets(nombres[4]); gets(nombres[5]); gets(nombres[6]); gets(nombres[7]); gets(nombres[8]); gets(nombres[9]);

Page 10: El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres es un vector de tipo char. char nombre[16]; 0 1 2 3.

Si vamos a cargar todos los nombres, usamos un for:

for(j=0;j<10;j++) { cout<<“Ingrese un nombre”; gets(nombres[ j ]); }Para mostrar todos los nombres, uso el mismo

for:

for(j=0;j<10;j++) { puts(nombres[ j ]); }

Page 11: El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres es un vector de tipo char. char nombre[16]; 0 1 2 3.

Si voy a leer nombre y apellido:

char nombre[15], apellido[15];int j;for(j=0; j<10; j++){ cout<<“Ingrese nombre”; gets(nombre[j]); cout<<“Ingrese apellido”; gets(apellido[j]);}

Page 12: El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres es un vector de tipo char. char nombre[16]; 0 1 2 3.

Para mostrar nombre y apellido en la misma línea:

for(j=0; j<10; j++){ cout<<nombre[j]<<“\t”<<apellido[j] <<“\

n”;}La salida será, por ejemplo:Juan PérezMaría CeballosJulio Peralta

Page 13: El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres es un vector de tipo char. char nombre[16]; 0 1 2 3.

Funciones para manipular cadenasAlgunas funciones de la biblioteca string.hstrlen(cadena) permite calcular la longitud de

la cadena (sin incluir el enter)strcpy(cad1, cad2) permite copiar una cadena

en otra.strcmp(cad1, cad2) permite comparar 2

cadenas, el resultado será:0 si las cadenas son iguales<0 si la cadena 1 es menor que la cadena 2>0 si la cadena 1 es mayor que la cadena 2

stricmp(cad1,cad2) igual que strcmp pero no tiene en cuenta mayúsculas y minúsculas.

Page 14: El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres es un vector de tipo char. char nombre[16]; 0 1 2 3.

Ejemploschar cadena1=“Hola mundo”,

cadena2=“Juancito”;int largo;Ejemplo de strlen()largo=strlen(cadena1); cout<<largo; //aquí muestra el valor 10Ejemplo de stricmp()if(stricmp(cadena1,cadena2)==0) cout<<“Las cadenas son iguales”;else cout<<“Las cadenas son distintas”;//aquí la salida será “Las cadenas son distintas”

Page 15: El tipo de datos cadena no existe en C/C++. Lo que utilizamos para manipular cadenas de caracteres es un vector de tipo char. char nombre[16]; 0 1 2 3.

Ejemplo de strcpy

strcpy(cadena1,cadena2);cout<<cadena1<<“\t”<<cadena2; //La salida será: “Juancito Juancito”

Otra función es strrev(cadena) que permite invertir una cadena, por ejemplo;

strrev(cad1);cout<<cad1; //La salida será: “oticnauJ”