Examen de Metodologia de la Programació UAB 2018 · Primer Parcial Curs 2018-2019
Examen de Metodologia de la Programació de la UAB (Grado en Ingeniería Informática) 2018, Primer Parcial Curs 2018-2019: 5 problemas con solución. Gratis.
Temas del examen: Disseny de classes: declaració, const i sobrecàrrega d'operadors · Constructors, destructors i fitxers · Classes contenidor amb arrays estàtics i composició
Pregunta 1 · Disseny de classes: declaració, const i sobrecàrrega d'operadors
Context
Aquest examen avalua els conceptes de disseny orientat a objectes en C++ mitjançant la creació i gestió d'una lliga de fins a 20 superherois. Es parteix de la declaració bàsica de la classe SuperHeroi:
class SuperHeroi
{
public:
SuperHeroi();
void setNom(string nom) { m_nom = nom; }
void setVelocitat(int velocitat) { m_velocitat = velocitat; }
void setPoder(const string& poder) { m_poder = poder; }
void setVida(int vida) { m_vides = vida; }
void setForca(int forca) { m_forca = forca; }
string getNom() const { return m_nom; }
int getVelocitat() const { return m_velocitat; }
int getVides() const { return m_vides; }
string getPoder() const { return m_poder; }
int getForca() const { return m_forca; }
private:
string m_nom;
int m_velocitat;
string m_poder;
int m_vides;
int m_forca;
};
Pregunta 1 (1 punt). Sobrecàrrega de l'operador > a la classe SuperHeroi
Incorporeu a la classe SuperHeroi la sobrecàrrega de l'operador de comparació major que ( >). El criteri d'ordre establert és el següent:
Primer es compara per la força.
Si tenen la mateixa força, es desempata per la velocitat.
Si la velocitat també coincideix, es compara pel nombre de vides.
Aquest operador s'haurà d'utilitzar en els exercicis posteriors sempre que calgui determinar quin superheroi precedeix o supera un altre.
Pregunta 2 · Disseny de classes: declaració, const i sobrecàrrega d'operadors
Context
Aquest examen avalua els conceptes de disseny orientat a objectes en C++ mitjançant la creació i gestió d'una lliga de fins a 20 superherois. Es parteix de la declaració bàsica de la classe SuperHeroi:
class SuperHeroi
{
public:
SuperHeroi();
void setNom(string nom) { m_nom = nom; }
void setVelocitat(int velocitat) { m_velocitat = velocitat; }
void setPoder(const string& poder) { m_poder = poder; }
void setVida(int vida) { m_vides = vida; }
void setForca(int forca) { m_forca = forca; }
string getNom() const { return m_nom; }
int getVelocitat() const { return m_velocitat; }
int getVides() const { return m_vides; }
string getPoder() const { return m_poder; }
int getForca() const { return m_forca; }
private:
string m_nom;
int m_velocitat;
string m_poder;
int m_vides;
int m_forca;
};
Pregunta 2 (1 punt). Declaració de la classe LligaSuperHerois
Realitzeu la declaració completa de la classe LligaSuperHerois en C++. Heu d'indicar:
Tots els atributs privats necessaris per emmagatzemar un màxim de 20 superherois i el nombre actual d'elements continguts.
La capçalera de tots els mètodes requerits per a la interfície pública: constructor per defecte i amb array, lectura des de fitxer, cerca per nom, inserció ordenada, eliminació per nom, enfrontament segons criteri i escriptura a fitxer.
L'ús correcte del qualificador const tant en els paràmetres com en els mètodes que no modifiquin l'estat intern de l'objecte.
Pregunta 3 - Constructors, destructors i fitxers · Constructors, destructors i fitxers
Context
Aquest examen avalua els conceptes de disseny orientat a objectes en C++ mitjançant la creació i gestió d'una lliga de fins a 20 superherois. Es parteix de la declaració bàsica de la classe SuperHeroi:
class SuperHeroi
{
public:
SuperHeroi();
void setNom(string nom) { m_nom = nom; }
void setVelocitat(int velocitat) { m_velocitat = velocitat; }
void setPoder(const string& poder) { m_poder = poder; }
void setVida(int vida) { m_vides = vida; }
void setForca(int forca) { m_forca = forca; }
string getNom() const { return m_nom; }
int getVelocitat() const { return m_velocitat; }
int getVides() const { return m_vides; }
string getPoder() const { return m_poder; }
int getForca() const { return m_forca; }
private:
string m_nom;
int m_velocitat;
string m_poder;
int m_vides;
int m_forca;
};
Pregunta 3 (Constructors i Fitxers - 2,5 punts)
Desenvolupeu el codi en C++ dels següents mètodes de la classe LligaSuperHerois:
a)
Constructor a partir d'un array [1 punt]: rep un array de superherois i la seva mida (< 20), i inicialitza la lliga amb aquests elements.
b)
Carregar la llista des de fitxer [1,5 punts]: llegeix superherois d'un fitxer de text línia a línia (format: nom velocitat poder vides força). La lectura s'ha d'aturar immediatament si es trenca el criteri d'ordenació decreixent (comprovat amb >) o s'assoleix el límit de capacitat.
Pregunta 3 - Classes contenidor amb arrays estàti… · Classes contenidor amb arrays estàtics i composició
Context
Aquest examen avalua els conceptes de disseny orientat a objectes en C++ mitjançant la creació i gestió d'una lliga de fins a 20 superherois. Es parteix de la declaració bàsica de la classe SuperHeroi:
class SuperHeroi
{
public:
SuperHeroi();
void setNom(string nom) { m_nom = nom; }
void setVelocitat(int velocitat) { m_velocitat = velocitat; }
void setPoder(const string& poder) { m_poder = poder; }
void setVida(int vida) { m_vides = vida; }
void setForca(int forca) { m_forca = forca; }
string getNom() const { return m_nom; }
int getVelocitat() const { return m_velocitat; }
int getVides() const { return m_vides; }
string getPoder() const { return m_poder; }
int getForca() const { return m_forca; }
private:
string m_nom;
int m_velocitat;
string m_poder;
int m_vides;
int m_forca;
};
Pregunta 3 (Cerca, eliminació i enfrontament - 4,5 punts)
Desenvolupeu el codi en C++ dels mètodes següents de la classe LligaSuperHerois:
c)
Cercar un superheroi a la lliga [2 punts]: donat el nom d'un superheroi, determina si es troba a la llista (per exemple, retornant el seu índex o un indicador de no trobat).
d)
Esborrar un superheroi de la lliga [1,5 punts]: donat el seu nom, si existeix a la lliga, elimina'l i reorganitza l'array per mantenir la coherència sense deixar buits.
e)
Enfrontar dos superherois [1 punt]: donats els noms de dos superherois i un criteri (" vides ", " velocitat " o " força "), comprova que ambdós formin part de la lliga, retorna el nom del guanyador i resta 20 unitats de vida al perdedor.
Pregunta 4 · Classes contenidor amb arrays estàtics i composició
Context
Aquest examen avalua els conceptes de disseny orientat a objectes en C++ mitjançant la creació i gestió d'una lliga de fins a 20 superherois. Es parteix de la declaració bàsica de la classe SuperHeroi:
class SuperHeroi
{
public:
SuperHeroi();
void setNom(string nom) { m_nom = nom; }
void setVelocitat(int velocitat) { m_velocitat = velocitat; }
void setPoder(const string& poder) { m_poder = poder; }
void setVida(int vida) { m_vides = vida; }
void setForca(int forca) { m_forca = forca; }
string getNom() const { return m_nom; }
int getVelocitat() const { return m_velocitat; }
int getVides() const { return m_vides; }
string getPoder() const { return m_poder; }
int getForca() const { return m_forca; }
private:
string m_nom;
int m_velocitat;
string m_poder;
int m_vides;
int m_forca;
};
Pregunta 4 (1 punt). Programa principal de prova
Escriviu la funció main en C++ que executi la seqüència d'instruccions següent:
Inicialitzar un array de superherois amb un únic heroi.
Instanciar la lliga de superherois inicialitzant-la mitjançant aquest array.
Carregar la llista de superherois a partir de l'arxiu "superherois.txt".
Afegir a la lliga un nou superheroi amb les dades següents: nom "Aquaman", velocitat 100, poder "lluitar_a_terra_i_mar", vides 100 i força 200.
Eliminar de la lliga el superheroi de nom "Batman".
Enfrontar Batman i Flash segons el criteri de velocitat.
Guardar la informació de la lliga resultant al fitxer "superherois.txt".
También puedes estudiar por temas
Practica un tema con ejercicios de los exámenes de todos los años, mezclados.
- Classes contenidor amb arrays estàtics i composició · 7 problemas · 50 % de que salga
- Disseny de classes: declaració, const i sobrecàrrega d'operadors · 6 problemas · 50 % de que salga
- Constructors, destructors i fitxers · 4 problemas · 50 % de que salga
- Apuntadors, arrays dinàmics i cost dels mètodes · 4 problemas · 50 % de que salga
- Llistes enllaçades amb nodes · 3 problemas · 50 % de que salga
- Ús de les estructures de dades de la STL · 2 problemas · 50 % de que salga