Advertisement
ArturKArdas

Untitled

May 31st, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.75 KB | None | 0 0
  1. // projekt Artuer.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4.  
  5. #include "stdafx.h"
  6. #include <iostream>
  7. #include <string>
  8.  
  9. using namespace std;
  10.  
  11.  
  12. class osoba
  13. {
  14. protected:
  15. string nazwisko;
  16. int wiek;
  17. public:
  18. osoba();
  19. virtual void wypisz();
  20. virtual osoba *kopia()
  21. {
  22. return new osoba(*this);
  23. }
  24. };
  25. class TabOsoba
  26. {
  27. private:
  28. osoba **Tab;
  29. int rozmiar;
  30. int licznik;
  31. public:
  32. TabOsoba();
  33. TabOsoba(int r);
  34. TabOsoba(TabOsoba & wzorzec);
  35. void DodajOsobe();
  36. void DodajOsobe(osoba *wzor);
  37. void WypiszTablice();
  38. ~TabOsoba()
  39. {
  40. delete[] Tab;
  41. }
  42. };
  43. class student:public virtual osoba
  44. {
  45. protected:
  46. int nralbumu;
  47. int rokstudiow;
  48. public:
  49. student();
  50. void wypisz();
  51. osoba *kopia()
  52. {
  53. return new student(*this);
  54. }
  55. };
  56. student::student()
  57. {
  58. cout<<"Podaj nr indeksu :";
  59. cin>> nralbumu;
  60. cout<<endl<<"podaj rok studiow :";
  61. cin>> rokstudiow;
  62.  
  63. }
  64. void student::wypisz()
  65. {
  66. std::cout << "Nazwisko: " << nazwisko << " wiek: " << wiek << " indeks: " << nralbumu << " rok: " << rokstudiow <<endl;
  67. }
  68. class pracownik:public virtual osoba
  69. {
  70. protected:
  71. string stanowisko;
  72. double pensja;
  73. public:
  74. pracownik();
  75. void wypisz();
  76. osoba *kopia()
  77. {
  78. return new pracownik(*this);
  79. }
  80.  
  81. };
  82. pracownik::pracownik()
  83. {
  84. cout<<endl<< "pensja:";
  85. cin >> pensja;
  86. cout<<endl<<"stanowisko :";
  87. cin >> stanowisko;
  88. }
  89. void pracownik::wypisz()
  90. {
  91. cout << "Nazwisko: " << nazwisko << " wiek: " << wiek << " pensja: " << pensja << " stanowisko: " << stanowisko <<endl;
  92. }
  93. class studentpracujacy:public student,public pracownik
  94. {
  95. public:
  96. studentpracujacy()
  97. {
  98.  
  99. }
  100. void wypisz();
  101. osoba *kopia()
  102. {
  103. return new studentpracujacy(*this);
  104. }
  105. };
  106. void studentpracujacy::wypisz()
  107. {
  108. cout<<"|nazwisko: "<<nazwisko<<"|wiek: "<<wiek<<"|pensja: "<<pensja<<"|stanowisko: "<<stanowisko<<"|numer albumu"<<nralbumu<< "|rok studii" <<rokstudiow;
  109. }
  110.  
  111. osoba::osoba()
  112. {
  113. cout << "Podaj nazwisko: ";
  114. cin >> nazwisko;
  115. cout<<endl<<"podaj wiek: ";
  116. cin>>wiek;
  117. }
  118.  
  119. void osoba::wypisz()
  120. {
  121. cout << "Nazwisko: " << nazwisko << " | Wiek: " << wiek << endl;
  122. }
  123. TabOsoba::TabOsoba()
  124. {
  125. rozmiar=0;
  126. }
  127. TabOsoba::TabOsoba(int r)
  128. {
  129. rozmiar = r;
  130. Tab = new osoba*[rozmiar];
  131. licznik = 0;
  132. }
  133. TabOsoba::TabOsoba(TabOsoba & wzor)
  134. {
  135. rozmiar = wzor.rozmiar;
  136. Tab = new osoba*[rozmiar];
  137. licznik = wzor.licznik;
  138.  
  139. for (int i = 0; i < licznik; i++)
  140. Tab[i] = wzor.Tab[i];
  141. }
  142. void TabOsoba::WypiszTablice()
  143. {
  144. for (int i = 0; i<licznik; i++)
  145. {
  146. Tab[i]->wypisz();
  147. }
  148. }
  149.  
  150. void TabOsoba::DodajOsobe()
  151. {
  152.  
  153. if(licznik >= rozmiar)
  154. {
  155. TabOsoba temp = TabOsoba(*this);
  156. delete [] Tab;
  157. rozmiar++;
  158.  
  159. Tab = new Osoba*[rozmiar];
  160.  
  161. for (int i = 0; i < rozmiar - 1; i++)
  162. Tab[i] = temp.Tab[i];
  163. }
  164.  
  165. std::cout << "Kogo chcesz dodac ( 1 osoba , 2 student, 3 pracownik, 4 student pracujacy): ";
  166. int a;
  167. cin >> a;
  168. switch (a)
  169. {
  170. case 1:
  171. {
  172. Tab[licznik] = new osoba();
  173. break;
  174. }
  175. case 2:
  176. {
  177. Tab[licznik] = new student();
  178. break;
  179. }
  180. case 3:
  181. {
  182. Tab[licznik] = new pracownik();
  183. break;
  184. }
  185. case 4:
  186. {
  187. Tab[licznik] = new studentpracujacy();
  188. break;
  189. }
  190. default:
  191. {
  192. cout << "Niestety nie udało Ci sie sprostać zadaniu wpisania odpowiedniej liczby" << std::endl;
  193. }
  194. }
  195. licznik++;
  196. }
  197. void TabOsoba::DodajOsobe(osoba * wzor)
  198. {
  199. osoba * wskaznik = wzor->kopia();
  200.  
  201. if (licznik >= rozmiar)
  202. {
  203. TabOsoba Kopia = TabOsoba(*this);
  204. delete[] Tab;
  205. rozmiar += 1;
  206. Tab = new osoba*[rozmiar];
  207. for (int i = 0; i < rozmiar; i++)
  208. {
  209. Tab[i] = Kopia.Tab[i];
  210. }
  211. }
  212.  
  213.  
  214. Tab[licznik] = wskaznik;
  215. licznik++;
  216. }
  217.  
  218. int main()
  219. {
  220. TabOsoba studenci;
  221. studenci.DodajOsobe();
  222. studenci.DodajOsobe();
  223. system("pause");
  224. return 0;
  225. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement