#include <iostream>
#include <string>
using namespace std;
class osoba{
protected:
string* imie;
string nazwisko;
public:
osoba():imie(new string("brak ")),nazwisko("brak"){}
osoba(const string& a1,const string& a2):imie(new string(a1)),nazwisko(a2){}
osoba(const osoba& ob):imie(new string(*ob.imie)),nazwisko(ob.nazwisko){}
virtual ostream& wypisz(ostream& out){out << *imie << " " << nazwisko;}
friend ostream& operator<<(ostream& out,osoba& ob){out << ob.wypisz(out);}
virtual ~osoba(){delete imie;}
};
class student:public osoba{
string kierunek;
unsigned rok;
public:
student():osoba(){}
student(const osoba& ob):osoba(ob){}
student(const osoba& ob,const string& a1,const unsigned& a2):osoba(ob),kierunek(a1),rok(a2){}
ostream& wypisz(ostream& out){out << *imie << " " << nazwisko << " " << kierunek << " " << rok << endl;}
};
//osoba::ktory = 0;
int main()
{
const osoba o1("Jan", "Kowalski");
const osoba o2("Ewa", "Nowak");
osoba* tab[5];
tab[0] = new osoba;
tab[1] = new student;
tab[2] = new osoba("Ala", "Kot");
tab[3] = new student(o1);
tab[4] = new student(o2, "Informatyka",3);
for(int i = 0; i < 5; i++)
try
{
cout << *tab[i] << endl;
}
catch (const string& err)
{
cerr << err << endl;
}
cout << "**********" << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmNsYXNzIG9zb2Jhewpwcm90ZWN0ZWQ6CiAgICBzdHJpbmcqIGltaWU7CiAgICBzdHJpbmcgbmF6d2lza287CnB1YmxpYzoKICAgIG9zb2JhKCk6aW1pZShuZXcgc3RyaW5nKCJicmFrICIpKSxuYXp3aXNrbygiYnJhayIpe30KICAgIG9zb2JhKGNvbnN0IHN0cmluZyYgYTEsY29uc3Qgc3RyaW5nJiBhMik6aW1pZShuZXcgc3RyaW5nKGExKSksbmF6d2lza28oYTIpe30KICAgIG9zb2JhKGNvbnN0IG9zb2JhJiBvYik6aW1pZShuZXcgc3RyaW5nKCpvYi5pbWllKSksbmF6d2lza28ob2IubmF6d2lza28pe30KICAgIHZpcnR1YWwgb3N0cmVhbSYgd3lwaXN6KG9zdHJlYW0mIG91dCl7b3V0IDw8ICppbWllIDw8ICIgIiA8PCBuYXp3aXNrbzt9CiAgICBmcmllbmQgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvdXQsb3NvYmEmIG9iKXtvdXQgPDwgb2Iud3lwaXN6KG91dCk7fQogICAgdmlydHVhbCB+b3NvYmEoKXtkZWxldGUgaW1pZTt9Cn07CmNsYXNzIHN0dWRlbnQ6cHVibGljIG9zb2JhewogICAgc3RyaW5nIGtpZXJ1bmVrOwogICAgdW5zaWduZWQgcm9rOwpwdWJsaWM6CiAgICBzdHVkZW50KCk6b3NvYmEoKXt9CiAgICBzdHVkZW50KGNvbnN0IG9zb2JhJiBvYik6b3NvYmEob2Ipe30KICAgIHN0dWRlbnQoY29uc3Qgb3NvYmEmIG9iLGNvbnN0IHN0cmluZyYgYTEsY29uc3QgdW5zaWduZWQmIGEyKTpvc29iYShvYiksa2llcnVuZWsoYTEpLHJvayhhMil7fQogICAgb3N0cmVhbSYgd3lwaXN6KG9zdHJlYW0mIG91dCl7b3V0IDw8ICppbWllIDw8ICIgIiA8PCBuYXp3aXNrbyA8PCAiICIgPDwga2llcnVuZWsgPDwgIiAiIDw8IHJvayA8PCBlbmRsO30KfTsKLy9vc29iYTo6a3RvcnkgPSAwOwppbnQgbWFpbigpCnsKICAgIGNvbnN0IG9zb2JhIG8xKCJKYW4iLCAiS293YWxza2kiKTsKICAgIGNvbnN0IG9zb2JhIG8yKCJFd2EiLCAiTm93YWsiKTsKIAogICAgb3NvYmEqIHRhYls1XTsKIAogICAgdGFiWzBdID0gbmV3IG9zb2JhOwogICAgdGFiWzFdID0gbmV3IHN0dWRlbnQ7CiAgICB0YWJbMl0gPSBuZXcgb3NvYmEoIkFsYSIsICJLb3QiKTsKICAgIHRhYlszXSA9IG5ldyBzdHVkZW50KG8xKTsKICAgIHRhYls0XSA9IG5ldyBzdHVkZW50KG8yLCAiSW5mb3JtYXR5a2EiLDMpOwogCiAgICBmb3IoaW50IGkgPSAwOyBpIDwgNTsgaSsrKQogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgY291dCA8PCAqdGFiW2ldIDw8IGVuZGw7CiAgICAgICAgfQogICAgICAgIGNhdGNoIChjb25zdCBzdHJpbmcmIGVycikKICAgICAgICB7CiAgICAgICAgICAgIGNlcnIgPDwgZXJyIDw8IGVuZGw7CiAgICAgICAgfQogCiAgICBjb3V0IDw8ICIqKioqKioqKioqIiA8PCBlbmRsOwogCiAgICByZXR1cm4gMDsKfQ==