Está en la página 1de 6

1/6

GUIA DE LABORATORIO Nº 4
VECTOR DE CADENAS
OBJETIVOS

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

1. Crear funciones que manipule vectores de cadena


2. Crear funciones que manipule matrices de cadenas.

Ejem 1
//Lista de países que se almacena en un vector de cadenas
#include<iostream>
#include<string.h>
using namespace std;
const int N=20;

//Definicion de las funciones


void Almacenar(char x[][N],int n)
{ char p[5][20]={"Argentina","Venezuela","Peru","Estados Unidos","Canada"};
for(int i=0;i<n;i++)
strcpy(x[i],p[i]);
}

void Print(char x[][N],int n)


{ int i;
cout<<"Lista de Paises"<<endl<<endl;
for(i=0;i<n;i++)
cout<<"Pais["<<i<<"]="<<x[i]<<endl;
}

//Funcion principal
int main()
{ char Pais[5][N];
int ne=5;
Almacenar(Pais,ne);
Print(Pais,ne);
}

Ejem 2
Se almacena en un vector de cadenas el código, apellidos y en un vector numérico
la nota de la practica #1. Se pide implementar el algoritmo para leer los datos,
mostrar tal como fue leído.

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


2/6

#include<iostream>
using namespace std;
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
const int N=10,M=25;
//Definicion de las funciones
void LeerDatos(char c[N][M],char ap[N][M],int p1[N],int &n)
{int i;
cout<<"LECTURA DE DATOS"<<endl<<endl;
cout<<"Cuantos alumnos va procesar:";cin>>n;cout<<endl;
for(i=0;i<n;i++)
{cout<<"Alumno #"<<i+1<<endl;
cout<<"Codigo:";fflush(stdin);
gets(c[i]);cout<<"Apellidos:";gets(ap[i]); cout<<"Practica #1:";cin>>p1[i];
}
}

void Print(char c[N][M],char ap[N][M],int p1[N],int n)


{int i;
cout<<"\nSALIDA DE DATOS"<<endl<<endl;
for(i=0;i<n;i++)
cout<<c[i]<<"\t"<<ap[i]<<"\t"<<p1[i]<<endl;
}

//Funcion principal
int main()
{ char cod[N][M],Ape[N][M]; int Pract[N],nu;
LeerDatos(cod,Ape,Pract,nu);
Print(cod,Ape,Pract,nu);cout<<endl<<endl;
Ordenar(cod,Ape,Pract,nu);
Print(cod,Ape,Pract,nu);
}

Ejem 3

Dada una cadena C, se pide generar nC que viene a ser el vector de cadena cuyo
contenido será las palabras de la cadena C que comienza con el carácter car.
Luego mostrar el vector de cadena y la cantidad de elementos.
#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,k,j;
char cad[254];

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


3/6

for(i=0,k=0,j=0;c[i]!='\0';i++)
{ if(c[i]!=' ')
{ cad[k]=c[i];
k++;
}
else
{ cad[k]='\0';k=0;
if(cad[0]==car)
{ strcpy(nC[j],cad);
j++;
}
}
}

cad[k]='\0';k=0;
if(cad[0]==car)
{ strcpy(nC[j],cad);
j++;
}
return j;
}

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


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

//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;
}

Ejem 4
Dada una cadena cualquiera compuesto por palabras y separadas por un espacio
en blanco, se pide escribir un programa que almacene en un vector las palabras
encontradas y la longitud de cada palabra y esta debe almacenar en otro vector.
Finalmente escribir ambos vectores.

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


4/6

#include<iostream>
#include<string.h>
#define N 250
using namespace std;

//Definiendo las funciones


void LeerCadena(char x[])
{ cout<<endl<<"Ingrese la cadena"<<endl;
cin.getline(x,80);
}

void GeneraVectores(char x[],char y[N][80],int z[],int &m)


{int i,j;char pal[80];
//Agregando un espacio en blanco al final de la cadena
for(i=0;x[i]!='\0';)
i++;
x[i]=' '; i++;x[i]='\0';
//Generando el vector de cadenas y el vector numerico
i=0;j=0;m=0;
while(x[i]!='\0')
{ if(x[i]!=' ')
{ pal[j]=x[i];
j++;
}
else
{ pal[j]='\0';strcpy(y[m],pal);
z[m]=strlen(pal); m++; j=0;strcpy(pal,"");
}
i++;
}
}

void Print(char y[][80],int z[],int m)


{ int i;cout<<endl<<"Salida de ambos vectores"<<endl;
for(i=0;i<m;i++)
cout<<"A["<<i<<"]="<<y[i]<<"\tB["<<i<<"]="<<z[i]<<endl;
}

//Funcion principal
int main()
{ char cad[N],A[N][80]; int B[N],n,p;
LeerCadena(cad);
GeneraVectores(cad,A,B,n);
Print(A,B,n);
}

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


5/6

EJERCICIOS PROPUESTOS
1. Escribir un programa que acepte el ingreso de una cadena que contiene
números enteros, la misma está separada por un espacio en blanco. Luego
copiar dichos datos a un vector de cadena. Finalmente escribir la cadena y
el vector generado.
2. En base al vector generado cada elemento deberá convertir a un número
entero y almacenar en otro vector. Luego calcular el número mayor, el
menor, el segundo mayor y las respectivas posiciones que ocupa. También
deberá calcular el promedio aritmético. Finalmente mostrar los resultados
calculados.
3. Escribe un programa en C++ que al recibir como dato un vector de n
elementos, donde en cada elemento almacena una cadena. Se pide
determinar la cantidad de minúsculas, mayúsculas que hay en cada
cadena. Estos resultados deben almacenar en vectores independientes.
Finalmente escribir el vector de cadena y los vectores generados.
Implemente las funciones necesarias.
4. Escribe un programa en C++ que permita almacenar en un vector los
nombres de todos los distritos de Lima metropolitana, en otro vector que
almacene la superficie (km2) y en una matriz los nombres de los distritos
con el cual limita por el norte, este, sur y oeste. Si limita con mas de un
distrito, los datos al ingresar deben separar con comas. En base a la
información realizar lo siguiente:
✓ Realizar la lectura de datos.
✓ Mostrar los datos leídos.
✓ Determinar el distrito con la mayor y menor superficie, de que distrito
se trata.
✓ Mostrar la información hallada en la pregunta anterior.
5. Supongo que usted conoce cuales son las capitales más importantes de los
países del mundo. De no ser así, este es su oportunidad de recordar y por
lo tanto tendrá una excelente ayuda en casa. La aplicación que debe
desarrollar consiste en almacenar la siguiente información: Nombre de país,
capital y población de todos los países de nuestro planeta. Al ejecutar el
programa el sistema debe presentarle el siguiente menú de opciones.

SISTEMA DE PAISES VERSUS CAPITALES


***********************************************
1. América
2. Europa
3. África
4. Asia
5. Oceanía

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


6/6

6. Estadística
7. Terminar

Digite su opción [1 – 7]:

El sistema consiste en un juego que usted debe adivinar la capital del país
mostrado en pantalla, para ello debe elegir cualquiera de las opciones del 1
al 5, inmediatamente el programa mostrara el nombre del país seguido de
una pregunta ¿ Que capital tiene: ?, a la misma usted debe responder con
la respuesta, inmediatamente el sistema debe mostrarle el mensaje de
“felicitaciones ud, conoce geografía” , la población es: 2548560 habitantes y
se hará acreedor de un punto a su favor, luego le pregunta si desea seguir
con el juego, si contesta afirmativamente, saldrá otro país y el proceso
sigue repitiéndose. Si a la interrogante anterior usted contesta con no, el
sistema le muestra el menú principal.
Si la respuesta es errada a la capital de un país, el sistema le muestra el
siguiente mensaje “...Reflexione antes de responder por favor, “ y tendrá 2
oportunidades más. Si en el segundo intento falla, el sistema le restara
medio punto, dándole la última oportunidad, si en este último se equivoca el
sistema escribe el mensaje “Lo siento, usted de repasar geografía” y
termina el juego para retornar al menú principal.
Al elegir la opción estadística, debe mostrarle la cantidad de puntos
acumulados y perdidos y su puntaje final obtenido.
Finalmente, la opción terminar, finaliza la sesión de trabajo.

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

También podría gustarte