Pregunta 3 - Constructors, destructors i fitxers · Metodologia de la Programació UAB 2018

Tema: Constructors, destructors i fitxers · Del examen Examen Primer Parcial Curs 2018-2019 (2018)

Enunciado

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.

Enunciado: Pregunta 3 - Constructors, destructors i fitxers · Metodologia de la Programació UAB 2018

Solución

Según los criterios oficiales de corrección

a. Constructor a partir d'un array: rep un array de superherois i la seva mida (< 20), i inicialitza la lliga amb aquests elements.

Solución: ```cpp LligaSuperHerois::LligaSuperHerois(const SuperHeroi llista[], int nElements) { if (nElements > MAX_SUPERHEROIS) m_nSuperherois = MAX_SUPERHEROIS; else m_nSuperherois = nElements; for (int i = 0; i < m_nSuperherois; ++i) { m_superherois[i] = llista[i]; } } ```

b. Carregar la llista des de fitxer: 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.

Solución: ```cpp bool LligaSuperHerois::carregarDeFitxer(const string& nomFitxer) { ifstream fitxer(nomFitxer); if (!fitxer.is_open()) return false; m_nSuperherois = 0; string nom, poder; int velocitat, vides, forca; bool ordreCorrecte = true; while (m_nSuperherois < MAX_SUPERHEROIS && fitxer >> nom >> velocitat >> poder >> vides >> forca && ordreCorrecte) { SuperHeroi sh; sh.setNom(nom); sh.setVelocitat(velocitat); sh.setPoder(poder); sh.setVida(vides); sh.setForca(forca); if (m_nSuperherois > 0) { if (!(m_superherois[m_nSuperherois - 1] > sh)) { ordreCorrecte = false; } } if (ordreCorrecte) { m_superherois[m_nSuperherois] = sh; m_nSuperherois++; } } fitxer.close(); return true; } ```

La explicación paso a paso, hecha con IA, es Premium. Premium

Resuélvelo aquí mismo: corrección automática, pistas y solución paso a paso.

‹ Exercici 3.a - Constructors, destructors i fitxers · 2024 · Exercici 3.a - Fitxers · 2017 ›

Más ejercicios de Constructors, destructors i fitxers