PIAR v 015. 2024 Plan Individual de ajustes razonables
Ejercicios resueltos con vectores
1. Ejemplos de soluciones a requerimientos con vectores
Sea la siguiente tabla de datos de estudiantes:
cedula
nombre
sexo
nota
444
222
777
999
333
666
Liz
Ray
Ana
Mery
Joe
Kim
‘F’
‘M’
‘F’
‘F’
‘M’
‘F’
60
80
40
80
30
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
2. 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
3. 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:
b- El código necesario en cada clase para resolverlo:
60
Liz
Ana
40
Mery
80
Kim
80
CEDULA
444
222
777
999
333
666
NOMBRE SEXO NOTA
Liz ‘F’
Ray ‘M’
Ana ‘F’
Mery ‘F’
Joe ‘M’
Kim ‘F’
60
80
40
80
30
80
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;
}
4. 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:
b- El código necesario en cada clase para resolverlo:
Liz
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());
}
Mery
Kim
CEDULA
444
222
777
999
333
666
NOMBRE SEXO NOTA
Liz ‘F’
Ray ‘M’
Ana ‘F’
Mery ‘F’
Joe ‘M’
Kim ‘F’
60
80
40
80
30
80
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;
}
5. 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 estudiante
a- Entradas y salidas:
• Entrada del usuario: supongamos que introduce la cédula 999
• Salida:
b- El código necesario en cada clase para resolverlo:
444 MSalon::ListadoMismoSexo(long c, vector<string> &n,
Liz
Ana
777
Kim
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());
}
666
}
CEDULA
444
222
777
999
333
666
NOMBRE SEXO NOTA
Liz ‘F’
Ray ‘M’
Ana ‘F’
Mery ‘F’
Joe ‘M’
Kim ‘F’
60
80
40
80
30
80
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;
}
6. 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 nota
a- Entradas y salidas:
• Entrada del usuario: supongamos que introduce la cédula 999
• Salida:
b- El código necesario en cada clase para resolverlo:
El sexo es ‘F’ MSalon::InfoMismaNotaSexo(long c, char &s, float &n,
p = BuscarEstud(c);
La nota es 80
if (p > -1){
La tienen
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());
}
Mery
Kim
CEDULA
444
222
777
999
333
666
NOMBRE SEXO NOTA
Liz ‘F’
Ray ‘M’
Ana ‘F’
Mery ‘F’
Joe ‘M’
Kim ‘F’
60
80
40
80
30
80
vector<string>&n){
}
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
}
7. 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 estudiante
a- Entradas y salidas:
• Entrada del usuario: supongamos que introduce la cédula 777
• Salida:
b- El código necesario en cada clase para resolverlo:
Liz
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());
Ray
Mery
Kim
CEDULA
444
222
777
999
333
666
}
NOMBRE SEXO NOTA
Liz ‘F’
Ray ‘M’
Ana ‘F’
Mery ‘F’
Joe ‘M’
Kim ‘F’
60
80
40
80
30
80
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
}