Examen de Metodologia de la Programació UAB 2017 · Primer Parcial (Curs 2017-2018)
Examen de Metodologia de la Programació de la UAB (Grado en Ingeniería Informática) 2017, Primer Parcial (Curs 2017-2018): 4 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ó
Exercici 1 · Disseny de classes: declaració, const i sobrecàrrega d'operadors
Exercici 1 [3 punts]. Disseny i implementació de la classe Venda
Dissenyeu i implementeu una classe anomenada Venda per emmagatzemar la informació referent a una venda gestionada per un treballador. Les dades que cal registrar per cada operació són: la data en què s'ha produït, l'import econòmic i el concepte o descripció de l'article venut.
La interfície pública d'aquesta classe ha d'incorporar:
Un constructor capaç d'inicialitzar els atributs de la venda mitjançant la data, l'import monetari i la descripció subministrats per paràmetre.
Els mètodes d'accés (consultors) i modificació dels membres de dades necessaris per al desenvolupament dels exercicis posteriors.
L'operador < sobrecarregat per comparar dues vendes: s'estableix que una venda és inferior a una altra si la seva data és anterior. En cas que ambdues dates coincideixin, es considerarà menor aquella venda l'import de la qual sigui inferior.
Criteris addicionals:
Cal incloure tant la declaració de la classe com la implementació de tots els seus mètodes (definint com a inline aquells que siguin adients).
Cal especificar el qualificador const en tots aquells paràmetres i mètodes que correspongui.
Podeu assumir que ja es disposa de la classe Data implementada amb la següent interfície:
class Data
{
public:
string getData() const;
void setData(const string &data);
bool operator<(const Data &d) const;
bool operator==(const Data &d) const;
bool operator>(const Data &d) const;
};
on getData i setData utilitzen el format de text "DD/MM/AAAA" i els operadors relacionals comparen cronològicament.
Exercici 2 · Classes contenidor amb arrays estàtics i composició
Exercici 2 (4 punts). Classe Empleat i gestió ordenada de vendes
Dissenyeu i programeu la classe Empleat per registrar el nom del treballador i el conjunt de vendes que ha formalitzat mitjançant la classe Venda de l'exercici anterior. Es pren com a hipòtesi que cap empleat no gestionarà més de 100 vendes.
a)
Especifiqueu la declaració de la classe incorporant els atributs privats pertinents i la signatura de les funcions membres públiques. Afegiu també els consultors o modificadors requerits per a les tasques de l'Exercici 3.
b)
Desenvolupeu el constructor per defecte que inicialitzi adequadament tant les dades personals de l'empleat com l'estructura de vendes.
c)
Declareu i implementeu el mètode afegeixVenda, el qual rebrà per referència constant un objecte Venda i el col·locarà a la col·lecció interna mantenint l'ordre creixent determinat pel criteri establert a l'Exercici 1.
d)
Declareu i programeu el mètode importComissio, encarregat de calcular i retornar la comissió atorgada a l'empleat per les operacions realitzades entre dues dates rebudes per paràmetre en format cadena ( string). La quantia correspon al 10% del total facturat en vendes compreses dins d'aquest interval temporal.
Notes: Declareu els mètodes elegibles com a inline i utilitzeu correctament el modificador const.
Exercici 3.a - Tractament de fitxers · Constructors, destructors i fitxers
Exercici 3 (3 punts). Tractament de fitxers i càlcul col·lectiu de comissions
Implementeu les dues funcions independents següents:
a.
Una funció per carregar des d'un fitxer de text les vendes d'un empleat amb la capçalera:
void llegeixVendesEmpleat(Empleat &e, const string &nomFitxer); La funció ha d'obrir el fitxer anomenat nomFitxer, extreure tots els registres de vendes continguts i afegir-los a l'objecte e passat per referència.
El fitxer presenta l'estructura següent (on cada data s'expressa en format string):
DATA_VENDA_1
IMPORT_VENDA_1
DESCRIPCIO_VENDA_1
DATA_VENDA_2
IMPORT_VENDA_2
DESCRIPCIO_VENDA_2
...
DATA_VENDA_N
IMPORT_VENDA_N
DESCRIPCIO_VENDA_N
Exercici 3.b - Arrays estàtics d'objectes · Classes contenidor amb arrays estàtics i composició
Exercici 3 (3 punts). Tractament de fitxers i càlcul col·lectiu de comissions
Implementeu les dues funcions independents següents:
b.
Una funció encarregada de mostrar per sortida estàndard la comissió que percep cada treballador contingut en una llista per a un període donat. La capçalera ha de ser:
void escriuComissioEmpleats(Empleat dadesEmpleats[], int nEmpleats,
const string &dataInici, const string &dataFinal); Per a cadascun dels empleats de la taula, caldrà imprimir el seu nom acompanyat de la comissió econòmica a rebre.
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