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();
- osoba(string napis, int lata);
- osoba(osoba &wzorzec);
- bool operator!=(osoba & wzor);
- osoba & operator=(osoba & wzor);
- virtual void wypisz();
- virtual osoba *kopia()
- {
- return new osoba(*this);
- }
- /*ostream & operator<<(ostream &wyjscie)
- {
- return wyjscie << "Nazwisko: " << nazwisko << ",Wiek: " <<wiek<<endl;
- }
- ~osoba()
- {
- }*/
- //friend ostream & operator<<(ostream & wyjscie, osoba & obiektosoba);
- friend class TabOsoba;
- };
- class TabOsoba
- {
- private:
- osoba **Tab;
- int rozmiar;
- int licznik;
- public:
- TabOsoba();
- TabOsoba(int r);
- TabOsoba(TabOsoba & wzorzec);
- int PodajRozmiar();
- void DodajOsobe();
- void DodajOsobe(osoba *wzor);
- void WypiszTablice();
- //bool szukaj(string nazwisko, TabOsoba &SzukaneOsoby);
- osoba & operator[](int i)
- { if(i>licznik||i>rozmiar)
- return *Tab[licznik];
- else
- return *Tab[i];
- }
- ~TabOsoba()
- {
- delete[] Tab;
- }
- };
- class student:public virtual osoba
- {
- protected:
- int nralbumu;
- int rokstudiow;
- public:
- student();
- student(string nazw, int wiek, int indeks, int rok);
- void wypisz();
- osoba *kopia()
- {
- return new student(*this);
- }
- };
- student::student()
- {
- cout<<"Podaj nr indeksu :";
- cin>> nralbumu;
- cout<<endl<<"podaj rok studiow :";
- cin>> rokstudiow;
- }
- student::student(string nazw, int wiek, int indeks, int rok) : osoba(nazwisko , wiek)
- {
- nralbumu=indeks;
- rokstudiow=rok;
- }
- 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();
- pracownik(string nazw, int w, double p,string stan);
- void wypisz();
- osoba *kopia()
- {
- return new pracownik(*this);
- }
- };
- pracownik::pracownik()
- {
- cout<<endl<< "pensja, rok zatrudnienia, stanowisko :";
- cin >> pensja;
- cout<<endl<<"stanowisko :";
- cin >> stanowisko;
- }
- pracownik::pracownik(string nazw, int w, double p,string stan)
- {
- pensja = p;
- stanowisko = stan;
- }
- void pracownik::wypisz()
- {
- cout << "Nazwisko: " << nazwisko << " wiek: " << wiek << " pensja: " << pensja << " stanowisko: " << stanowisko <<endl;
- }
- class studentpracujacy:public student,public pracownik
- {
- public:
- studentpracujacy();
- studentpracujacy(string nazw, int lat, double pensja, string stan, int indeks, int rok);
- void wypisz();
- osoba *kopia()
- {
- return new studentpracujacy(*this);
- }
- };
- studentpracujacy::studentpracujacy(string nazw, int lat, double pensja, string stan, int indeks, int rok)
- {
- cout<<"dziala";
- }
- void studentpracujacy::wypisz()
- {
- cout<<"|nazwisko: "<<nazwisko<<"|wiek: "<<wiek<<"|pensja: "<<pensja<<"|stanowisko: "<<stanowisko<<"|numer albumu"<<nralbumu<< "|rok studii" <<rokstudiow;
- }
- /*ostream & operator<<(ostream & wyjscie, osoba & obiektosoba)
- {
- return wyjscie<<"Nazwisko: " << obiektosoba.nazwisko << ",Wiek: " <<obiektosoba.wiek<<endl;
- }
- bool osoba::operator!=(osoba & wzor)
- {
- if (this->nazwisko == wzor.nazwisko && this->wiek == wzor.wiek)
- return false;
- else
- return true;
- }
- osoba& osoba::operator=(osoba & wzor)
- {
- if (* this != wzor)
- {
- int rozmiar = nazwisko.length() + 1;
- nazwisko = new char[rozmiar];
- nazwisko = wzor.nazwisko;
- wiek = wzor.wiek;
- return * this;
- }
- else
- return wzor;
- }*/
- osoba::osoba()
- {
- cout << "Podaj nazwisko: ";
- cin >> nazwisko;
- cout<<endl<<"podaj wiek: ";
- cin>>wiek;
- }
- osoba::osoba(string napis, int lata)
- {
- int dlugosc=napis.length();
- nazwisko = new char[dlugosc + 1];
- nazwisko=napis;
- wiek = lata;
- }
- osoba::osoba(osoba &wzorzec)
- {
- //int dlugosc=strlen(wzorzec.nazwisko);
- nazwisko = wzorzec.nazwisko;
- //strcpy(nazwisko, wzorzec.nazwisko);
- wiek = wzorzec.wiek;
- }
- void osoba::wypisz()
- {
- cout << nazwisko << " " << wiek << " lat" << endl;
- }
- TabOsoba::TabOsoba()
- {
- rozmiar=0;
- /*cout << "jaki rozmiar?";
- cin >> rozmiar;
- Tab = new osoba*[rozmiar];
- licznik = 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];
- }
- int TabOsoba::PodajRozmiar()
- {
- return rozmiar;
- }
- void TabOsoba::WypiszTablice()
- {
- for (int i = 0; i<licznik; i++)
- {
- Tab[i]->wypisz();
- }
- }
- void TabOsoba::DodajOsobe()
- {
- if(licznik >= rozmiar)
- {
- int r=rozmiar+1;
- TabOsoba temp = TabOsoba(*this);
- delete [] Tab;
- Tab = new osoba*[r];
- for (int i = 0; i < r - 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:
- {
- osoba *t;
- t =new osoba;
- Tab[licznik] = t;
- licznik++;
- }break;
- case 2:
- {
- osoba *t = new student();
- Tab[licznik] = t;
- licznik++;
- }break;
- case 3:
- {
- osoba *t = new pracownik();
- Tab[licznik] = t;
- licznik++;
- }break;
- /*case 4:
- {
- osoba *t = new studentpracujacy();
- Tab[licznik] = t;
- licznik++;
- }break;*/
- default:
- {
- cout << "Niestety nie udało Ci sie sprostać zadaniu wpisania odpowiedniej liczby" << std::endl;
- }
- }
- }
- void TabOsoba::DodajOsobe(osoba * wzor)
- {
- osoba * wsk = wzor;
- osoba *wsks = wsk->kopia();
- if (licznik >= rozmiar)
- {
- TabOsoba Kopia = TabOsoba(*this);
- delete[] Tab;
- rozmiar += 1;
- Tab = new osoba*[rozmiar];
- for (int i = 0; i < rozmiar; i++)
- {
- if (i == rozmiar - 1)
- {
- Tab[i] = wsks;
- licznik++;
- break;
- }
- Tab[i] = Kopia.Tab[i];
- }
- }
- else
- {
- Tab[licznik] = wsks;
- licznik++;
- }
- }
- /*bool TabOsoba::szukaj(string nazw, TabOsoba &SzukaneOsoby)
- {
- bool k = 0;
- for (int i = 0 ; i<licznik; i++)
- {
- if (!strcmp(nazw, Tab[i]->nazwisko))
- {
- k++;
- }
- }
- return k;
- }*/
- int main()
- {
- TabOsoba studenci;
- studenci.DodajOsobe();
- studenci.DodajOsobe();
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement