Guia Laboratorio #3

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

1/7

GUIA DE LABORATORIO Nº3


VECTOR DE CADENAS
OBJETIVOS

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

1. Crear funciones que manipule vectores y 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 codigo, 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 leido y finalmente ver ordenado alfabéticamente por
apellidos.

Algoritmos y Estructura de Datos Ing. Félix Huari Evangelista


2/7

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

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


{int i,j;
char x[M],y[M];int t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(ap[i],ap[j])>0)
{strcpy(x,c[i]);strcpy(c[i],c[j]);strcpy(c[j],x);
strcpy(y,ap[i]);strcpy(ap[i],ap[j]);strcpy(ap[j],y);
t=p1[i];p1[i]=p1[j];p1[j]=t;
}
}

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

Algoritmos y Estructura de Datos Ing. Félix Huari Evangelista


3/7

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];
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);

Algoritmos y Estructura de Datos Ing. Félix Huari Evangelista


4/7

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.
#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++;
}
}

Algoritmos y Estructura de Datos Ing. Félix Huari Evangelista


5/7

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 Estructura de Datos Ing. Félix Huari Evangelista


6/7

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. Tambien
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 debe 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 al recibir como dato un arreglo que
almacena cadenas de caracteres, encuentre la cadena de mayor longitud
sin utilizar la función strlen, y que finalmente imprima la cadena de mayor
longitud y la longitud de la misma, cree las funciones necesarias que usted
cree conveniente.
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. America
2. Europa
3. Africa
4. Asia
5. Oceanía
6. Estadística
7. Terminar

Digite su opcion [1 – 7]:

Algoritmos y Estructura de Datos Ing. Félix Huari Evangelista


7/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 mas. Si en el segundo intento falla, el sistema le restara
medio punto, dándole la ultima oportunidad, si en este ultimo se equivoca el
sistema displaya 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 Estructura de Datos Ing. Félix Huari Evangelista

También podría gustarte