#include<iostream>
#include<conio.h>
#include<string.h>
class persona {
protected:
char apyn[31];
char dom[41];
int edad;
public:
persona();
persona(char *, char *, int);
~persona();
friend istream& operator>>(istream&, persona&);
friend ostream& operator<<(ostream&, const persona&);
};
class empleado:public persona {
protected:
float sueldo;
public:
empleado() {
sueldo = 0;
}
empleado(float sueldo, char *apyn, char *dom, int edad):persona(apyn, dom, edad) {
this->sueldo = sueldo;
}
friend istream& operator>>(istream&, empleado&);
friend ostream& operator<<(ostream&, const empleado&);
void mostrar() {
cout << apyn << dom << edad << endl;
}
~empleado() {
cout << "Destructor de empleado.";
getch();
}
};
class alumno: public empleado {
private:
int matap; float prom;
public:
alumno() {
matap = 0; prom = 0.0;
}
alumno(int matap, float prom, float sueldo, char *apyn, char *dom, int edad):empleado(sueldo,apyn,dom,edad) {
this->matap = matap; this->prom = prom;
}
~alumno() {
cout << "Destructor de alumno";
getch();
}
friend istream& operator>>(istream&, alumno&);
friend ostream& operator<<(ostream&, const alumno&);
};
void main() {
persona p1, p3("Perez, Maria", "Puan 100, Capital", 22);
empleado e1, e2(1000.0, "Perez, Maria", "Puan 100, Capital", 22);
cin >> p1;
cin >> e1;
cout << endl << p1 << endl << p3 << endl;
cout << e1 << endl << e2 << endl;
cout << endl << "Presione una tecla para salir";
getch();
}
/* DEFINICION CLASE PERSONA */
persona::persona() {
apyn[0] = '\0';
dom[0] = '\0';
edad = 0;
}
persona::persona(char *a, char *b, int c) {
if(strlen(a) < 31) strcpy(this->apyn, a);
if(strlen(b) < 41) strcpy(this->dom, b);
if(edad > 0) this->edad = c;
else this->edad = 0;
}
persona::~persona() {
cout << endl << "Destructor de persona.";
getch();
}
istream& operator>>(istream &e, persona &p) {
cout << "Apellido y nombre:";
e.get(p.apyn, 31);
e.ignore(100, '\n');
cout << "Domicilio:";
e.get(p.dom, 41);
e.ignore(100, '\n');
cout << "Edad:";
e >> p.edad;
e.ignore(100, '\n');
return e;
}
ostream& operator<<(ostream &s, const persona &p) {
s << "Nombre:" << p.apyn << endl;
s << "Domicilio:" << p.dom << endl;
s << "Edad:" << p.edad << endl;
return s;
}
/* DEFINICION CLASE PERSONA */
/* DEFINICION CLASE EMPLEADO */
istream& operator>>(istream &e, empleado &p) {
e >> (persona &) p;
cout << "Sueldo:";
e >> p.sueldo;
e.ignore(100, '\n');
return e;
}
ostream& operator<<(ostream &s, const empleado &p) {
s << (persona &)p;
s.precision(2);
s << "Sueldo:" << p.sueldo << endl;
return s;
}
/* DEFINICION CLASE EMPLEADO */
/* DEFINICION CLASE ALUMNO */
istream& operator>>(istream &e, alumno &p) {
e >> (empleado &) p;
cout << "Materias aprobadas y promedio:";
e >> p.matap >> p.prom;
e.ignore(100, '\n');
return e;
}
ostream& operator<<(ostream &s, const alumno &p) {
s << (empleado &) p;
s.precision(2);
s << p.matap << p.prom << endl;
return s;
}
/* DEFINICION CLASE ALUMNO */