Sunteți pe pagina 1din 18

VECTOR DE CADENAS

Al igual que los datos numéricos se almacena en un


vector, es posible también almacenar un conjunto de
cadenas en un vector.
Por ejemplo se desea almacenar los nombres de los 25
departamentos del País, el esquema seria el siguiente:

0 Arequipa
1 La Libertad
2 Madre de Dios
...

24 Huancavelica
ALGORITMOS Y ESTRUCTURAS DE DATOS 1
VECTOR DE CADENAS
Un vector de cadena es declarado por la palabra
reservada char.
La declaración se realiza con dos dimensiones como si
se tratara de una matriz.
La primera dimensión (M) indica la cantidad de
elementos que tiene el vector.
La segunda dimensión (N) indica la longitud que tiene la
cadena.
Sintaxis
char <Nombre Variable>[M][N];

ALGORITMOS Y ESTRUCTURAS DE DATOS 2


VECTOR DE CADENAS
Ejemplo: Declarar la variable aPaterno como vector de
cadena que almacene el apellido paterno de 30
estudiantes.
char aPaterno[30][15];// El compilador reserva así
Longitud de la cadena

Numero de elementos 0 1 2 3 ... 14


del vector de cadena 0

2
...

29

ALGORITMOS Y ESTRUCTURAS DE DATOS 3


ASIGNACION DE DATOS A UN VECTOR DE CADENAS

Para guardar datos en un vector de cadenas se puede


realizar de 2 formas:
a) Durante la declaración de la variable
Ejemplo:
char apel[30][15]={“Mendoza”, “De la Cruz”,
0 Mendoza
”Pizarro”,…,”Howard”};
1 De la Cruz
2
Pizarro
b) Mediante lectura de datos ... …
 Para ello se emplea las funciones de cadena
predefinidas 29 Howard

ALGORITMOS Y ESTRUCTURAS DE DATOS 4


MATRIZ DE CADENAS
//Programa que almacena el nombre de paises en un vector
#include<iostream>
using namespace std;
//Funcion principal
int main()
{ char p[5][20]={"Argentina","Venezuela","Peru","Estados Unidos","Canada"};
int n=5,i;
cout<<"Lista de Paises"<<endl<<endl;
for(i=0;i<n;i++)
cout<<"Pais["<<i<<"]="<<p[i]<<endl;
}

ALGORITMOS Y ESTRUCTURAS DE DATOS 5


PROBLEMAS CON CADENAS
/* Implementar la siguiente funcion:
int GeneraVectorCadena( char c[],char nC[N][M], char car)
donde C es la cadena original, nC es el vector de cadenas a generar
y car es un caracter alfabetico cualquiera. Implementar la funcion
que genere el vector cuyo contenido sean las palabras que
empiezan con el caracter car y que devuelva la cantidad de
elementos de dicho vector. */
#include <iostream>
#include <string.h>
const int N=254,M=254;
using namespace std;
int GeneraVectorCadena( char c[],char nC[N][M], char car)
{ int i=0,x,p=0,j=0;
char k[254]; strcat(c," ");

ALGORITMOS Y ESTRUCTURAS DE DATOS 6


PROBLEMAS CON CADENAS
while((c[i]!=' ') && (c[i]!='\0'))
{ x=c[i];
if(x==car)
{ while(c[i]!=' ')
{ k[j]=c[i]; j++;i++;
}
k[j] ='\0'; strcpy(nC[p],k);k[0] ='\0'; j=0; p++;
}
else
while(c[i]!=' ')
i++;
i++;
}
return p;
}
ALGORITMOS Y ESTRUCTURAS DE DATOS 7
PROBLEMAS CON CADENAS
// Funcion que muestra el vector de cadena

void VerVector(char nC[N][M],int m)


{ int i;
for(i=0;i<m;i++)
cout<<"nC["<<i<<"]="<<nC[i]<<endl;
}

ALGORITMOS Y ESTRUCTURAS DE DATOS 8


PROBLEMAS CON CADENAS
//programa principal
int main()
{ int n;
char cadena[N],nuevaC[N][M],letra;
cout<<"Cual es la cadena....? :"<<endl;
cin.getline(cadena,N);
cout<<"Ingrese el caracter..? :";cin>>letra;
n=GeneraVectorCadena( cadena,nuevaC,letra);
if(n!=0)
{VerVector(nuevaC,n);cout<<endl<<"Tiene "<<n<<"
elementos"<<endl;}
else
cout<<"\a\nVector no generado..."<<endl;
}
ALGORITMOS Y ESTRUCTURAS DE DATOS 9
MATRIZ DE CADENAS
De igual manera es posible manipular matrices que
almacenan cadenas.
Suponga que se desea almacenar 5 lugares turísticos
del Perú por cada zona geográfica (Centro, Sur,
Oriente), el esquema seria el siguiente
0 1 2

0 Bosque de rocas Cañón del Colca Laguna Yarinacocha

Nevado Huascaran Misti Reserva Manu


1

Tarma Líneas de Nazca Fortaleza Kuelap


2
... … … …

Marcahuasi Arco de los héroes Puerto Belen


6

ALGORITMOS Y ESTRUCTURAS DE DATOS 10


MATRIZ DE CADENAS

La declaración se realiza con tres dimensiones usando


la palabra reservada char.
La primera dimensión (M) indica la cantidad de filas de la
matriz.
La segunda dimensión (N) indica la cantidad de
columnas de las matriz.
La tercera dimensión (T), indica la longitud que tiene la
cadena.

ALGORITMOS Y ESTRUCTURAS DE DATOS 11


MATRIZ DE CADENAS
Para declarar debe seguir la siguiente sintaxis.
Sintaxis: char <Nombre Variable>[M][N][T];
char q[30][4][20];
longitud de 20

0 1 2 3
0

2
...

29

ALGORITMOS Y ESTRUCTURAS DE DATOS 12


ASIGNACION DE DATOS A UNA MATRIZ DE CADENAS

Para guardar datos en una matriz de cadenas se puede


realizar de 2 formas:
a) Durante la declaración de la variable
Ejemplo:
char ap[5][2][15]={“Marin”, “Da costa”,
”Mendoza”, ”Davila”,
“Mendez”, “De la Torre”,
“Miranda”, ”Del Rio”,
“Morales”, “Duarte”};

ALGORITMOS Y ESTRUCTURAS DE DATOS 13


MATRIZ DE CADENAS
La declaración anterior de la variable ap, queda como el
mostrado
0 1
0 Marin Da Costa

1 Mendoza Davila

2 Mendez De la Torre

3 Miranda Del Rio

4 Morales Duarte

ALGORITMOS Y ESTRUCTURAS DE DATOS 14


ASIGNACION DE DATOS A UNA MATRIZ DE CADENAS
b) Mediante lectura de datos
 Para ello se emplea las funciones predefinidas de cadena
/*Programa que almacena en la matriz dp los nombre de departamentos
de la Costa, Sierra y Selva */
#include<iostream>
using namespace std;
const int N=5,M=3,P=15;
//Funcion principal
int main()
{ char dp[N][M][P]={"Lambayeque ","Cajamarca ","Amazonas ",
"La libertad ","Pasco ","San Martin ",
"Ancash ","Huanuco ","Loreto ",
"Lima ","Huancavelica ","Ucayali ",
"Arequipa ","Cuzco ","Madre de Dios"};

ALGORITMOS Y ESTRUCTURAS DE DATOS 15


ASIGNACION DE DATOS A UNA MATRIZ DE CADENAS
int i,j;
cout<<"Lista de Departamentos"<<endl<<endl;
for(i=0;i<N;i++)
{ for(j=0;j<M;j++)
cout<<dp[i][j]<<"\t";
cout<<endl;
}
}

ALGORITMOS Y ESTRUCTURAS DE DATOS 16


ASIGNACION DE DATOS A UNA MATRIZ DE CADENAS

b) Mediante lectura de datos


 Para ello se emplea las funciones predefinidas de cadena
/*Programa que almacena en la matriz Dpto los nombre de departamentos de la
Costa, Sierra y Selva */
#include<iostream>
using namespace std;
const int N=5,M=3,P=15;
//Definicion de funiones
void LeerDptos(char x[][M][P])
{ int i,j;
cout<<"Lectura de Departamentos"<<endl;
for(i=0;i<N;i++)
{ cout<<"0:Costa, 1:Sierra: 2:Selva"<<endl<<endl;
for(j=0;j<M;j++)
{cout<<"Dpto["<<i<<"]["<<j<<"]="; cin.getline(x[i][j],P);
}
ALGORITMOS Y ESTRUCTURAS DE DATOS 17
ASIGNACION DE DATOS A UNA MATRIZ DE CADENAS
}
cout<<endl<<endl;
}

void Listar(char x[N][M][P])


{ int i,j;
cout<<"Listado de Departamentos"<<endl<<endl;
for(i=0;i<N;i++)
{ for(j=0;j<M;j++)
cout<<x[i][j]<<"\t";
cout<<endl; //Funcion principal
} int main()
} { char Dpto[N][M][P];
LeerDptos(Dpto);
Listar(Dpto);
}

ALGORITMOS Y ESTRUCTURAS DE DATOS 18

S-ar putea să vă placă și