Ejercicios resueltos con vectores

7
Ejemplos de soluciones a requerimientos con vectores Sea la siguiente tabla de datos de estudiantes: cedula nombre sexo nota 444 Liz ‘F’ 60 222 Ray ‘M’ 80 777 Ana ‘F’ 40 999 Mery ‘F’ 80 333 Joe ‘M’ 30 666 Kim ‘F’ 80 Y los siguientes requerimientos: 1. Nombre y nota de los estudiantes de sexo femenino 2. Dado un sexo por el usuario, listar los nombres de los aprobados respectivos 3. Dada una cédula por el usuario, listar los nombres y cédulas con el mismo sexo que este estudiante 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 nota 5. Dada una cédula por el usuario, listar los nombres de los estudiantes que tienen nota mayor a este estudiante Muestre: a- Entradas y salidas para cada requerimiento b- El código necesario en cada clase para resolverlo

Transcript of Ejercicios resueltos con vectores

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