Advertisement
ArturKArdas

program

May 31st, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.24 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.  
  13.  
  14.  
  15. class osoba
  16. {
  17. protected:
  18. string nazwisko;
  19. int wiek;
  20. public:
  21. osoba();
  22. osoba(string napis, int lata);
  23. osoba(osoba &wzorzec);
  24. bool operator!=(osoba & wzor);
  25. osoba & operator=(osoba & wzor);
  26. virtual void wypisz();
  27. virtual osoba *kopia()
  28. {
  29. return new osoba(*this);
  30. }
  31. /*ostream & operator<<(ostream &wyjscie)
  32. {
  33. return wyjscie << "Nazwisko: " << nazwisko << ",Wiek: " <<wiek<<endl;
  34. }
  35. ~osoba()
  36. {
  37.  
  38. }*/
  39. //friend ostream & operator<<(ostream & wyjscie, osoba & obiektosoba);
  40. friend class TabOsoba;
  41. };
  42. class TabOsoba
  43. {
  44. private:
  45. osoba **Tab;
  46. int rozmiar;
  47. int licznik;
  48. public:
  49. TabOsoba();
  50. TabOsoba(int r);
  51. TabOsoba(TabOsoba & wzorzec);
  52. int PodajRozmiar();
  53. void DodajOsobe();
  54. void DodajOsobe(osoba *wzor);
  55. void WypiszTablice();
  56. //bool szukaj(string nazwisko, TabOsoba &SzukaneOsoby);
  57. osoba & operator[](int i)
  58. { if(i>licznik||i>rozmiar)
  59. return *Tab[licznik];
  60. else
  61. return *Tab[i];
  62. }
  63. ~TabOsoba()
  64. {
  65. delete[] Tab;
  66. }
  67. };
  68. class student:public virtual osoba
  69. {
  70. protected:
  71. int nralbumu;
  72. int rokstudiow;
  73. public:
  74. student();
  75. student(string nazw, int wiek, int indeks, int rok);
  76. void wypisz();
  77. osoba *kopia()
  78. {
  79. return new student(*this);
  80. }
  81. };
  82. student::student()
  83. {
  84. cout<<"Podaj nr indeksu :";
  85. cin>> nralbumu;
  86. cout<<endl<<"podaj rok studiow :";
  87. cin>> rokstudiow;
  88.  
  89. }
  90. student::student(string nazw, int wiek, int indeks, int rok) : osoba(nazwisko , wiek)
  91. {
  92. nralbumu=indeks;
  93. rokstudiow=rok;
  94.  
  95. }
  96. void student::wypisz()
  97. {
  98. std::cout << "Nazwisko: " << nazwisko << " wiek: " << wiek << " indeks: " << nralbumu << " rok: " << rokstudiow <<endl;
  99. }
  100. class pracownik:public virtual osoba
  101. {
  102. protected:
  103. string stanowisko;
  104. double pensja;
  105. public:
  106. pracownik();
  107. pracownik(string nazw, int w, double p,string stan);
  108. void wypisz();
  109. osoba *kopia()
  110. {
  111. return new pracownik(*this);
  112. }
  113.  
  114. };
  115. pracownik::pracownik()
  116. {
  117. cout<<endl<< "pensja, rok zatrudnienia, stanowisko :";
  118. cin >> pensja;
  119. cout<<endl<<"stanowisko :";
  120. cin >> stanowisko;
  121. }
  122. pracownik::pracownik(string nazw, int w, double p,string stan)
  123. {
  124. pensja = p;
  125. stanowisko = stan;
  126. }
  127. void pracownik::wypisz()
  128. {
  129. cout << "Nazwisko: " << nazwisko << " wiek: " << wiek << " pensja: " << pensja << " stanowisko: " << stanowisko <<endl;
  130. }
  131. class studentpracujacy:public student,public pracownik
  132. {
  133. public:
  134. studentpracujacy();
  135. studentpracujacy(string nazw, int lat, double pensja, string stan, int indeks, int rok);
  136. void wypisz();
  137. osoba *kopia()
  138. {
  139. return new studentpracujacy(*this);
  140. }
  141. };
  142. studentpracujacy::studentpracujacy(string nazw, int lat, double pensja, string stan, int indeks, int rok)
  143. {
  144. cout<<"dziala";
  145. }
  146. void studentpracujacy::wypisz()
  147. {
  148. cout<<"|nazwisko: "<<nazwisko<<"|wiek: "<<wiek<<"|pensja: "<<pensja<<"|stanowisko: "<<stanowisko<<"|numer albumu"<<nralbumu<< "|rok studii" <<rokstudiow;
  149. }
  150. /*ostream & operator<<(ostream & wyjscie, osoba & obiektosoba)
  151. {
  152. return wyjscie<<"Nazwisko: " << obiektosoba.nazwisko << ",Wiek: " <<obiektosoba.wiek<<endl;
  153. }
  154.  
  155. bool osoba::operator!=(osoba & wzor)
  156. {
  157. if (this->nazwisko == wzor.nazwisko && this->wiek == wzor.wiek)
  158. return false;
  159. else
  160. return true;
  161. }
  162. osoba& osoba::operator=(osoba & wzor)
  163. {
  164. if (* this != wzor)
  165. {
  166. int rozmiar = nazwisko.length() + 1;
  167. nazwisko = new char[rozmiar];
  168. nazwisko = wzor.nazwisko;
  169. wiek = wzor.wiek;
  170. return * this;
  171. }
  172. else
  173. return wzor;
  174.  
  175. }*/
  176. osoba::osoba()
  177. {
  178. cout << "Podaj nazwisko: ";
  179. cin >> nazwisko;
  180. cout<<endl<<"podaj wiek: ";
  181. cin>>wiek;
  182. }
  183. osoba::osoba(string napis, int lata)
  184. {
  185. int dlugosc=napis.length();
  186. nazwisko = new char[dlugosc + 1];
  187. nazwisko=napis;
  188. wiek = lata;
  189. }
  190. osoba::osoba(osoba &wzorzec)
  191. {
  192. //int dlugosc=strlen(wzorzec.nazwisko);
  193. nazwisko = wzorzec.nazwisko;
  194. //strcpy(nazwisko, wzorzec.nazwisko);
  195. wiek = wzorzec.wiek;
  196. }
  197.  
  198. void osoba::wypisz()
  199. {
  200. cout << nazwisko << " " << wiek << " lat" << endl;
  201. }
  202. TabOsoba::TabOsoba()
  203. {
  204. rozmiar=0;
  205. /*cout << "jaki rozmiar?";
  206. cin >> rozmiar;
  207. Tab = new osoba*[rozmiar];
  208. licznik = 0;*/
  209. }
  210. TabOsoba::TabOsoba(int r)
  211. {
  212. rozmiar = r;
  213. Tab = new osoba*[rozmiar];
  214. licznik = 0;
  215. }
  216. TabOsoba::TabOsoba(TabOsoba & wzor)
  217. {
  218. rozmiar = wzor.rozmiar;
  219. Tab = new osoba*[rozmiar];
  220. licznik = wzor.licznik;
  221. for (int i = 0; i < licznik; i++)
  222. Tab[i] = wzor.Tab[i];
  223. }
  224.  
  225. int TabOsoba::PodajRozmiar()
  226. {
  227. return rozmiar;
  228. }
  229.  
  230. void TabOsoba::WypiszTablice()
  231. {
  232. for (int i = 0; i<licznik; i++)
  233. {
  234. Tab[i]->wypisz();
  235. }
  236. }
  237.  
  238. void TabOsoba::DodajOsobe()
  239. {
  240.  
  241. if(licznik >= rozmiar)
  242. {
  243. int r=rozmiar+1;
  244. TabOsoba temp = TabOsoba(*this);
  245. delete [] Tab;
  246. Tab = new osoba*[r];
  247. for (int i = 0; i < r - 1; i++)
  248. Tab[i] = temp.Tab[i];
  249. }
  250.  
  251. std::cout << "Kogo chcesz dodac ( 1 osoba , 2 student, 3 pracownik, 4 student pracujacy): ";
  252. int a;
  253. cin >> a;
  254. switch (a)
  255. {
  256. case 1:
  257. {
  258. osoba *t;
  259. t =new osoba;
  260. Tab[licznik] = t;
  261. licznik++;
  262. }break;
  263. case 2:
  264. {
  265. osoba *t = new student();
  266. Tab[licznik] = t;
  267. licznik++;
  268. }break;
  269. case 3:
  270. {
  271. osoba *t = new pracownik();
  272. Tab[licznik] = t;
  273. licznik++;
  274. }break;
  275. /*case 4:
  276. {
  277. osoba *t = new studentpracujacy();
  278. Tab[licznik] = t;
  279. licznik++;
  280. }break;*/
  281. default:
  282. {
  283. cout << "Niestety nie udało Ci sie sprostać zadaniu wpisania odpowiedniej liczby" << std::endl;
  284. }
  285. }
  286.  
  287. }
  288. void TabOsoba::DodajOsobe(osoba * wzor)
  289. {
  290. osoba * wsk = wzor;
  291. osoba *wsks = wsk->kopia();
  292. if (licznik >= rozmiar)
  293. {
  294. TabOsoba Kopia = TabOsoba(*this);
  295. delete[] Tab;
  296. rozmiar += 1;
  297. Tab = new osoba*[rozmiar];
  298. for (int i = 0; i < rozmiar; i++)
  299. {
  300. if (i == rozmiar - 1)
  301. {
  302. Tab[i] = wsks;
  303. licznik++;
  304. break;
  305. }
  306. Tab[i] = Kopia.Tab[i];
  307. }
  308. }
  309. else
  310. {
  311. Tab[licznik] = wsks;
  312. licznik++;
  313. }
  314. }
  315. /*bool TabOsoba::szukaj(string nazw, TabOsoba &SzukaneOsoby)
  316. {
  317. bool k = 0;
  318. for (int i = 0 ; i<licznik; i++)
  319. {
  320. if (!strcmp(nazw, Tab[i]->nazwisko))
  321. {
  322. k++;
  323. }
  324. }
  325. return k;
  326. }*/
  327.  
  328.  
  329. int main()
  330. {
  331. TabOsoba studenci;
  332. studenci.DodajOsobe();
  333. studenci.DodajOsobe();
  334. system("pause");
  335. return 0;
  336. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement