Download - Ejercicios resueltos con vectores

Transcript
Page 1: Ejercicios resueltos con vectores

Ejemplos de soluciones a requerimientos con vectores

Sea la siguiente tabla de datos de estudiantes:

cedula nombre sexo nota444 Liz ‘F’ 60222 Ray ‘M’ 80777 Ana ‘F’ 40999 Mery ‘F’ 80333 Joe ‘M’ 30666 Kim ‘F’ 80

Y los siguientes requerimientos:1. Nombre y nota de los estudiantes de sexo femenino2. Dado un sexo por el usuario, listar los nombres de los aprobados respectivos3. Dada una cédula por el usuario, listar los nombres y cédulas con el mismo

sexo que este estudiante4. Dada una cédula por el usuario, listar el sexo y nota respectivo y los nombres

de estudiantes de ese sexo que tienen la misma nota5. Dada una cédula por el usuario, listar los nombres de los estudiantes que

tienen nota mayor a este estudianteMuestre: a- Entradas y salidas para cada requerimiento

b- El código necesario en cada clase para resolverlo

Page 2: Ejercicios resueltos con vectores

Ejemplos de soluciones a requerimientos con vectores

Las clases respectivas son las siguientes:

MSalon-----------------------------------------arr_est: vector <MEstud>----------------------------------------+MSalon()+IncluirEstud(MEstud): void+CantEstud(): int+BuscarEstud(ced: long): int+ObtenerEstud(i: int): MEstud

MEstud-----------------------------------------cedula: long-nombre: string-sexo: char-nota: float----------------------------------------+MEstud()...Gets...Sets

Page 3: Ejercicios resueltos con vectores

Ejemplos de soluciones a requerimientos con vectores

Solución:1- Nombre y nota de los estudiantes de sexo femenino

a- Entradas y salidas:• No requiere entrada del usuario• Salida:

Liz

Ana

Mery

Kim

60

40

80

80

b- El código necesario en cada clase para resolverlo:MSalon::DatosSexoFem(vector<string> &nm, vector <float> &nt){ for (int i=0; i<CantEstud(); i++) if (ObtenerEstud[i].GetSexo() = ‘F’){ nm.push_back (ObtenerEstud[i].GetNombre()); nt.push_back (ObtenerEstud[i].GetNota()); }}

Controlador::MostrarInfoFemenino(){ vector<string> arr_nomb; vector<float> arr_nota; ms.DatosSexoFem(arr_nomb, arr_nota); vs.ImprimirNombreNota(arr_nomb, arr_nota); vc.Pausa();}

VSalon::ImprimirNombreNota(vector<string> nm, vector <float> nt){ cout << “Nombre” << ‘\t’ << “Nota” << endl; for (unsigned int i=0; i<nm.size(); i++) cout << nm[i] << ‘\t’ << nt[i] << endl;}

CEDULANOMBRESEXONOTA

444 Liz ‘F’ 60222 Ray ‘M’ 80777 Ana ‘F’ 40999 Mery ‘F’ 80333 Joe ‘M’ 30666 Kim ‘F’ 80

Page 4: Ejercicios resueltos con vectores

Ejemplos de soluciones a requerimientos con vectores

Solución:2- Dado un sexo por el usuario, listar los nombres de los aprobados respectivos

a- Entradas y salidas:• Entrada del usuario: supongamos que introduce el sexo ‘F’• Salida:

Liz

Mery

Kim

b- El código necesario en cada clase para resolverlo:MSalon::AprobadosPorSexo(char s, vector<string> &nm){ for (int i=0; i<CantEstud(); i++) if (ObtenerEstud[i].GetSexo() = s and ObtenerEstud[i].GetNota() >= 47.5) nm.push_back (ObtenerEstud[i].GetNombre());}

Controlador::MostrarAprobadosPorSexo(){ char s = vs.LeerChar(“Qué sexo desea listar: ”); vector<string> arr_nomb; ms.AprobadosPorSexo(s, arr_nomb); vs.ImprimirNombreNota(arr_nomb, arr_nota); vc.Pausa();}

VSalon::ImprimirAprobadosPorSexo(vector<string> nm){ cout << “Nombre” << endl; for (unsigned int i=0; i<nm.size(); i++) cout << nm[i] << endl;}

CEDULANOMBRESEXONOTA

444 Liz ‘F’ 60222 Ray ‘M’ 80777 Ana ‘F’ 40999 Mery ‘F’ 80333 Joe ‘M’ 30666 Kim ‘F’ 80

Page 5: Ejercicios resueltos con vectores

Ejemplos de soluciones a requerimientos con vectores

Solución:3- Dada una cédula por el usuario, listar los nombres y cédulas con el mismo sexo que

este estudiantea- Entradas y salidas:• Entrada del usuario: supongamos que introduce la cédula 999• Salida: b- El código necesario en cada clase para resolverlo:

MSalon::ListadoMismoSexo(long c, vector<string> &n, vector<long> &c){ p = BuscarEstud(c); if (p > -1) for (int i=0; i<CantEstud(); i++) if (ObtenerEstud[i].GetSexo() = ObtenerEstud[p].GetSexo() and ObtenerEstud[i].GetNota() <> ObtenerEstud[p].GetSexo()){ n.push_back (ObtenerEstud[i].GetNombre()); c.push_back (ObtenerEstud[i].GetCedula()); }}

Controlador::MostrarListaMismoSexo(){ float c = vs.LeerLong(“Qué cédula desea revisar: ”); vector<string> arr_nomb; vector<long> arr_ced; ms.ListadoMismoSexo(s, arr_nomb, arr_ced); vs.ImprimirNombreNota(arr_nomb, arr_nota); vc.Pausa();}

VSalon::ImprimirAprobadosPorSexo(vector<string> n, vector<long> c){ cout << “Nombre” << ‘\t’ << “Cédula” << endl; for (unsigned int i=0; i<n.size(); i++) cout << n[i] << ‘\t’ << c[i] << endl;}

Liz

Ana

Kim

444

777

666

CEDULANOMBRESEXONOTA

444 Liz ‘F’ 60222 Ray ‘M’ 80777 Ana ‘F’ 40999 Mery ‘F’ 80333 Joe ‘M’ 30666 Kim ‘F’ 80

Page 6: Ejercicios resueltos con vectores

Ejemplos de soluciones a requerimientos con vectores

Solución:4- Dada una cédula por el usuario, listar el sexo y nota respectivo y los nombres de

estudiantes de ese sexo que tienen la misma notaa- Entradas y salidas:• Entrada del usuario: supongamos que introduce la cédula 999• Salida:El sexo es ‘F’La nota es 80La tienen

Mery

Kim

b- El código necesario en cada clase para resolverlo:MSalon::InfoMismaNotaSexo(long c, char &s, float &n, vector<string>&n){ p = BuscarEstud(c); if (p > -1){ s = ObtenerEstud[i].GetSexo(); n = ObtenerEstud[i].GetNota(); for (int i=0; i<CantEstud(); i++) if (ObtenerEstud[i].GetSexo() == s and ObtenerEstud[i].GetNota() == n){ n.push_back (ObtenerEstud[i].GetNombre()); c.push_back (ObtenerEstud[i].GetCedula()); }}

Controlador::MostrarInfoMismaNotaSexo(){ float c = vs.LeerLong(“Qué cédula desea revisar: ”); long s; float n; vector<string> arr_nomb; ms.InfoMismaNotaSexo(c, s, n, arr_nomb); vs.ImprimirInfoMismaNotaSexo(s, n, arr_nomb); vc.Pausa();}

VSalon::ImprimirInfoMismaNotaSexo{ // Propuesto}

CEDULANOMBRESEXONOTA

444 Liz ‘F’ 60222 Ray ‘M’ 80777 Ana ‘F’ 40999 Mery ‘F’ 80333 Joe ‘M’ 30666 Kim ‘F’ 80

Page 7: Ejercicios resueltos con vectores

Ejemplos de soluciones a requerimientos con vectores

Solución:5- Dada una cédula por el usuario, listar los nombres de los estudiantes que tienen

nota mayor a este estudiantea- Entradas y salidas:• Entrada del usuario: supongamos que introduce la cédula 777• Salida:

Liz

Ray

Mery

Kim

b- El código necesario en cada clase para resolverlo:MSalon::NombresNotaMayor(long c, vector<string> &n){ p = BuscarEstud(c); if (p > -1){ int n = ObtenerEstud[i].GetNota(); for (int i=0; i<CantEstud(); i++) if (ObtenerEstud[i].GetNota() > n) n.push_back (ObtenerEstud[i].GetNombre());}

Controlador::MostrarNombresNotaMayor(){ float c = vs.LeerLong(“Qué cédula desea revisar: ”); vector<string> arr_nomb; ms.NombresNotaMayor(c, arr_nomb); vs.ImprimirNombresNotaMayor(arr_nomb); vc.Pausa();}

VSalon::ImprimirInfoMismaNotaSexo{ // Propuesto}

CEDULANOMBRESEXONOTA

444 Liz ‘F’ 60222 Ray ‘M’ 80777 Ana ‘F’ 40999 Mery ‘F’ 80333 Joe ‘M’ 30666 Kim ‘F’ 80