Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // projekt Artuer.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <iostream>
- #include <string>
- using namespace std;
- class osoba
- {
- protected:
- string nazwisko;
- int wiek;
- public:
- osoba();
- virtual void wypisz();
- virtual osoba *kopia()
- {
- return new osoba(*this);
- }
- };
- class TabOsoba
- {
- private:
- osoba **Tab;
- int rozmiar;
- int licznik;
- public:
- TabOsoba();
- TabOsoba(int r);
- TabOsoba(TabOsoba & wzorzec);
- void DodajOsobe();
- void DodajOsobe(osoba *wzor);
- void WypiszTablice();
- ~TabOsoba()
- {
- delete[] Tab;
- }
- };
- class student:public virtual osoba
- {
- protected:
- int nralbumu;
- int rokstudiow;
- public:
- student();
- void wypisz();
- osoba *kopia()
- {
- return new student(*this);
- }
- };
- student::student()
- {
- cout<<"Podaj nr indeksu :";
- cin>> nralbumu;
- cout<<endl<<"podaj rok studiow :";
- cin>> rokstudiow;
- }
- void student::wypisz()
- {
- std::cout << "Nazwisko: " << nazwisko << " wiek: " << wiek << " indeks: " << nralbumu << " rok: " << rokstudiow <<endl;
- }
- class pracownik:public virtual osoba
- {
- protected:
- string stanowisko;
- double pensja;
- public:
- pracownik();
- void wypisz();
- osoba *kopia()
- {
- return new pracownik(*this);
- }
- };
- pracownik::pracownik()
- {
- cout<<endl<< "pensja:";
- cin >> pensja;
- cout<<endl<<"stanowisko :";
- cin >> stanowisko;
- }
- void pracownik::wypisz()
- {
- cout << "Nazwisko: " << nazwisko << " wiek: " << wiek << " pensja: " << pensja << " stanowisko: " << stanowisko <<endl;
- }
- class studentpracujacy:public student,public pracownik
- {
- public:
- studentpracujacy()
- {
- }
- void wypisz();
- osoba *kopia()
- {
- return new studentpracujacy(*this);
- }
- };
- void studentpracujacy::wypisz()
- {
- cout<<"|nazwisko: "<<nazwisko<<"|wiek: "<<wiek<<"|pensja: "<<pensja<<"|stanowisko: "<<stanowisko<<"|numer albumu"<<nralbumu<< "|rok studii" <<rokstudiow;
- }
- osoba::osoba()
- {
- cout << "Podaj nazwisko: ";
- cin >> nazwisko;
- cout<<endl<<"podaj wiek: ";
- cin>>wiek;
- }
- void osoba::wypisz()
- {
- cout << "Nazwisko: " << nazwisko << " | Wiek: " << wiek << endl;
- }
- TabOsoba::TabOsoba()
- {
- rozmiar=0;
- }
- TabOsoba::TabOsoba(int r)
- {
- rozmiar = r;
- Tab = new osoba*[rozmiar];
- licznik = 0;
- }
- TabOsoba::TabOsoba(TabOsoba & wzor)
- {
- rozmiar = wzor.rozmiar;
- Tab = new osoba*[rozmiar];
- licznik = wzor.licznik;
- for (int i = 0; i < licznik; i++)
- Tab[i] = wzor.Tab[i];
- }
- void TabOsoba::WypiszTablice()
- {
- for (int i = 0; i<licznik; i++)
- {
- Tab[i]->wypisz();
- }
- }
- void TabOsoba::DodajOsobe()
- {
- if(licznik >= rozmiar)
- {
- TabOsoba temp = TabOsoba(*this);
- delete [] Tab;
- rozmiar++;
- Tab = new Osoba*[rozmiar];
- for (int i = 0; i < rozmiar - 1; i++)
- Tab[i] = temp.Tab[i];
- }
- std::cout << "Kogo chcesz dodac ( 1 osoba , 2 student, 3 pracownik, 4 student pracujacy): ";
- int a;
- cin >> a;
- switch (a)
- {
- case 1:
- {
- Tab[licznik] = new osoba();
- break;
- }
- case 2:
- {
- Tab[licznik] = new student();
- break;
- }
- case 3:
- {
- Tab[licznik] = new pracownik();
- break;
- }
- case 4:
- {
- Tab[licznik] = new studentpracujacy();
- break;
- }
- default:
- {
- cout << "Niestety nie udało Ci sie sprostać zadaniu wpisania odpowiedniej liczby" << std::endl;
- }
- }
- licznik++;
- }
- void TabOsoba::DodajOsobe(osoba * wzor)
- {
- osoba * wskaznik = wzor->kopia();
- if (licznik >= rozmiar)
- {
- TabOsoba Kopia = TabOsoba(*this);
- delete[] Tab;
- rozmiar += 1;
- Tab = new osoba*[rozmiar];
- for (int i = 0; i < rozmiar; i++)
- {
- Tab[i] = Kopia.Tab[i];
- }
- }
- Tab[licznik] = wskaznik;
- licznik++;
- }
- int main()
- {
- TabOsoba studenci;
- studenci.DodajOsobe();
- studenci.DodajOsobe();
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement