Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2017
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.24 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <math.h>
  6.  
  7. using namespace std;
  8.  
  9. class Element{
  10. public :
  11. Element * Pop, * Nast;
  12. int id;
  13. Element()
  14. {
  15. Pop=NULL;Nast=NULL;
  16. }
  17. Element(int ID)
  18. {
  19. Pop=NULL;Nast=NULL,id = ID;
  20. }
  21. virtual void Print()
  22. {
  23. cout<< "ID: "<<id << endl;
  24. }
  25. virtual void Zapisz_sie_w_pliku(ofstream *plik)
  26. {
  27. *plik << "Nazwa: Elememt"<< endl;
  28. *plik << "id: "<< id << endl;
  29. }
  30. virtual void Odczytaj_sie(ifstream * plik)
  31. {
  32. char *text1;
  33. *plik >> text1 >> id;
  34. if(strcmp(text1, "id:")!=0)
  35. {
  36. cout << "Blad Element 1 " << text1;
  37. }
  38. }
  39. };
  40. class Lista{
  41. public:
  42. Element * Pierwszy, * Ostatni;
  43. virtual bool czy_leq(Element * P, Element *D)
  44. {
  45. if(P -> id <= D->id)return true;
  46. return false;
  47. }
  48. void AddSort(Element *E)
  49. {
  50. if(Pierwszy == NULL)
  51. {
  52. Add2End(E);
  53. }
  54. else if (czy_leq(E,Pierwszy))
  55. {
  56. Pierwszy -> Pop = E;
  57. E->Nast=Pierwszy;
  58. Pierwszy = E;
  59. Ilosc++;
  60. }
  61. else if(czy_leq(Ostatni,E))
  62. {
  63. Add2End(E);
  64. }
  65. else
  66. {
  67. Element *Temp = Pierwszy;
  68. while(Temp && czy_leq(Temp,E))
  69. {
  70. Temp = Temp->Nast;
  71. }
  72. Temp -> Pop = Temp->Pop;
  73. Temp->Pop=E;
  74. E->Nast=Temp;
  75. Ilosc++;
  76. }
  77. }
  78.  
  79. int Ilosc;
  80. void Wyjmij(Element *E)
  81. {
  82. if(Pierwszy == E)
  83. {
  84. if(Ostatni == E)
  85. {
  86. Pierwszy = Ostatni = NULL;
  87. }
  88. else
  89. {
  90. Pierwszy = Pierwszy -> Nast;
  91. Pierwszy -> Pop = NULL;
  92. }
  93. }
  94. else if(Ostatni == E)
  95. {
  96. Ostatni = Ostatni -> Pop;
  97. Ostatni -> Nast = NULL;
  98. }
  99. else
  100. {
  101. E->Nast->Pop = E->Pop;
  102. E->Pop->Nast = E->Nast;
  103. }
  104. E->Pop=NULL;
  105. E->Nast=NULL;
  106. Ilosc--;
  107. }
  108. Element *Znajdz(int id_F)
  109. {
  110. for(Element*Temp = Pierwszy;Temp;Temp=Temp->Nast)
  111. {
  112. if(Temp->id = id_F) return Temp;
  113. return NULL;
  114. }
  115. }
  116. void Ponumeruj()
  117. {
  118. int i=1;
  119. for(Element*Temp = Pierwszy;Temp;Temp=Temp->Nast)
  120. {
  121. Temp -> id = ++i;
  122. }
  123. }
  124. Lista()
  125. {
  126. Ostatni=NULL;
  127. Pierwszy=NULL;
  128. Ilosc = 0;
  129. cout<<"Kostruktor"<<endl;
  130. }
  131. void Add2End(Element * E)
  132. {
  133. if(Pierwszy==NULL)
  134. {
  135. Pierwszy = Ostatni = E;
  136. Ilosc = 1;
  137. }
  138. else
  139. {
  140. Ostatni->Nast=E;
  141. E->Pop = Ostatni;
  142. Ostatni = E;
  143. Ilosc++;
  144. }
  145. }
  146. virtual void Naglowek()
  147. {
  148. cout<<"Lista"<<endl;
  149. cout<<"Lista Elementow "<<Ilosc<<endl;
  150. }
  151. void Print_Sama_Lista(){
  152. Element * Temp = Pierwszy;
  153. while(Temp)
  154. {
  155. cout<< "ID: "<<Temp->id<<endl;
  156. Temp = Temp->Nast;
  157. }
  158. }
  159. void Print()
  160. {
  161. Naglowek();
  162. Print_Sama_Lista();
  163.  
  164. }
  165. void Print_Reverse()
  166. {
  167. Naglowek();
  168. for(Element * Temp=Ostatni;Temp;Temp=Temp->Pop)
  169. {
  170. cout<<"ID: " <<Temp->id<<endl;
  171. }
  172. }
  173. void Zapisz_do_pliku(char * Nazwa)
  174. {
  175. ofstream plik;
  176. plik.open( Nazwa);
  177. if( plik.good() == false )
  178. {
  179. cout << "brak dostepu";
  180. }
  181. else
  182. {
  183. Zapisz_w_otwartym_pliku(&plik);
  184. plik.close();
  185. };
  186. };
  187. void Zapisz_w_otwartym_pliku(ofstream *plik)
  188. {
  189. *plik << "Nazwa: Lista"<< endl;
  190. *plik << "ilosc: "<< Ilosc << endl;
  191. Element * Temp= Pierwszy;
  192. while (Temp)
  193. {
  194. Temp->Zapisz_sie_w_pliku(plik);
  195. Temp=Temp->Nast;
  196. }
  197. };
  198. void Odczytaj_z_pliku(char * Nazwa)
  199. {
  200. ifstream plik;
  201. plik.open( Nazwa);
  202. if( plik.good() == false )
  203. {
  204. cout << "brak dostepu";
  205. }
  206. else
  207. {
  208. Odczytaj_sie_z_otwartego_pliku(&plik);
  209. plik.close();
  210. };
  211. }
  212. void Odczytaj_sie_z_otwartego_pliku(ifstream *plik)
  213. {
  214. char text1[255], text2[255];
  215. *plik >> text1 >> text2;
  216. if (strcmp(text1,"Nazwa:")!=0||strcmp(text2,"Lista")!=0)
  217. {
  218. cout << "Blad list 1" << text1 << "::"<< text2;
  219. exit(1);
  220. }
  221. ///*plik << "ilosc: "<< ilosc << endl;
  222. int I;
  223. *plik >> text1 >> I;
  224. if (strcmp(text1,"ilosc:")!=0)
  225. {
  226. cout << "Blad list 2" << text1 << "::"<< text2;
  227. exit(1);
  228. }
  229. for (int n=0;n <I ;n++)
  230. {
  231. Element * E = Oczytaj_obiekt_z_pliku(plik);
  232. Add2End(E);
  233. }
  234. }
  235. virtual Element * Utworz_obiekt_takiej_klasy(string Nazwa)
  236. {
  237. if (Nazwa == "Element")
  238. {
  239. return new Element();
  240. }
  241. else
  242. {
  243. cout << " Blad Lisa::Utworz_obiekt_takiej_klasy" << Nazwa;
  244. exit(1);
  245. }
  246. }
  247. Element * Oczytaj_obiekt_z_pliku(ifstream * plik)
  248. {
  249. char text1[255]; string text2;
  250. *plik >> text1 >> text2;
  251. if (strcmp(text1,"Nazwa:")!=0)
  252. {
  253. cout << "Blad odczyt 1" << text1 << "::"<< text2;
  254. exit(1);
  255. }
  256. Element * E = Utworz_obiekt_takiej_klasy(text2);
  257. E->Odczytaj_sie(plik);
  258. return E;
  259. }
  260. ~Lista()
  261. {
  262. Element * E= Pierwszy, *F;
  263. while(E)
  264. {
  265. F=E;
  266. E=E->Nast;
  267. delete F;
  268. }
  269. Pierwszy = NULL;
  270. Ostatni = NULL;
  271. }
  272. };
  273. class Pies:public Element
  274. {
  275. public:
  276. string rasa;
  277. string adres_budy;
  278. int wiek;
  279. string imie;
  280. Pies(int ID,string imionaa,string Rasa,int Wiek,string AB):Element(ID)
  281. {
  282. rasa = Rasa;
  283. wiek = Wiek;
  284. adres_budy = AB;
  285. imie = imionaa;
  286. }
  287. void Print()
  288. {
  289. cout << "Imie: "<< imie <<endl;
  290. cout << "Rasa : "<< rasa<<endl<< "Wiek : "<<wiek<<endl<<"Adres Budy : "<<adres_budy <<endl;
  291. cout << endl;
  292.  
  293. }
  294. void Zapisz_sie_w_pliku(ofstream *plik)
  295. {
  296. *plik << "Nazwa : Pies"<<endl;
  297. *plik << "Id : " << id<<endl;
  298. *plik << "Rasa : "<<rasa<<endl;
  299. *plik << "Adres_Budy : "<<adres_budy<<endl;
  300. *plik << "Wiek : "<<wiek<<endl;
  301. *plik << endl;
  302. }
  303. void Odczytaj_sie(ifstream *plik)
  304. {
  305. char text1[256];
  306. *plik >> text1 >> id;
  307. if(strcmp(text1, "ID:")!=0)
  308. {
  309. cout << "Blad Pies 1 " << text1;
  310. }
  311. *plik >> text1 >> rasa;
  312. if(strcmp(text1, "rasa:")!=0)
  313. {
  314. cout<<"Blad Pies 2 " << text1;
  315. }
  316. *plik >> text1 >> adres_budy;
  317. if(strcmp(text1, "adres_budy:")!=0)
  318. {
  319. cout <<"Blad Pies 2 " << text1;
  320. }
  321. *plik >> text1 >> wiek;
  322. if(strcmp(text1, "wiek:")!=0)
  323. {
  324. cout<<"Blad Pies 3 " << text1;
  325. }
  326. }
  327. Pies():Element(){};
  328. };
  329. class Kot:public Element
  330. {
  331. public:
  332. string rasa;
  333. string adres_kuwety;
  334. int wiek;
  335. string imie;
  336. Kot(int ID,string imionaa,string Rasa,int Wiek,string AK):Element(ID)
  337. {
  338. rasa = Rasa;
  339. wiek = Wiek;
  340. adres_kuwety= AK;
  341. imie = imionaa;
  342. }
  343. Kot():Element(){};
  344. void Print()
  345. {
  346. cout << "Imie: "<< imie <<endl;
  347. cout << "Rasa : "<< rasa<<endl<< "Wiek : "<<wiek<<endl<<"Adres Kuwety : "<<adres_kuwety<<endl;
  348. cout << endl;
  349. }
  350. void Zapisz_sie_w_pliku(ofstream *plik)
  351. {
  352. *plik << "Nazwa: Kot"<<endl;
  353. *plik << "Id: " << id<<endl;
  354. *plik << "Rasa: "<<rasa<<endl;
  355. *plik << "Adres kuwety: "<<adres_kuwety<<endl;
  356. *plik << "Wiek : "<< wiek<<endl;
  357. *plik << endl;
  358. }
  359. void Odczytaj_sie(ifstream *plik)
  360. {
  361.  
  362. char text1[256];
  363. *plik >> text1 >> id;
  364. if(strcmp(text1, "ID: ")!=0)
  365. {
  366. cout << "Blad Kot 1 " << text1;
  367. }
  368. *plik >> text1 >> rasa;
  369. if(strcmp(text1, "rasa: ")!=0)
  370. {
  371. cout<<"Blad Kot 2 " << text1;
  372. }
  373. *plik >> text1 >> adres_kuwety;
  374. if(strcmp(text1, "adres_kuwety: ")!=0)
  375. {
  376. cout <<"Blad Kot 2 " << text1;
  377. }
  378. *plik >> text1 >> wiek;
  379. if(strcmp(text1, "wiek: ")!=0)
  380. {
  381. cout<<"Blad Kot 3 " << text1;
  382. }
  383. }
  384. };
  385. class Zoo:public Lista
  386. {
  387. public:
  388. void Print()
  389. {
  390. Naglowek();
  391. Element *Temp = Pierwszy;
  392. while(Temp)
  393. {
  394. Temp->Print();
  395. Temp = Temp->Nast;
  396. }
  397. }
  398. void Dodaj_Zwierze()
  399. {
  400. string nowezwierze;
  401. int iloscc,wiek;
  402. string imionaa;
  403. string rasa;
  404. string adres_kuwety,adres_budy;
  405. int i;
  406. cout << "Podaj Zwierze (Pies/Kot): ";
  407. cin >> nowezwierze;
  408. cout << "Podaj ilosc: ";
  409. cin >> iloscc;
  410. if(nowezwierze == "Pies" || nowezwierze == "pies")
  411. {
  412. for(i = 0; i < iloscc;i++)
  413. {
  414. int idz = 1;
  415. cout <<"Adres Budy: ";
  416. cin >> adres_budy;
  417. cout << "Podaj Rase Psa: ";
  418. cin >> rasa;
  419. cout << "Podaj imie Psa: ";
  420. cin >> imionaa;
  421. cout << "Podaj wiek Psa: ";
  422. cin >> wiek;
  423. cout << endl;
  424. idz += i;
  425. Pies *P = new Pies(idz,imionaa, rasa ,wiek ,adres_budy);
  426. Add2End(P);
  427. }
  428.  
  429.  
  430. }
  431. else if(nowezwierze == "Kot" || nowezwierze == "kot")
  432. {
  433. for(i = 0; i < iloscc;i++)
  434. {
  435. int idz = 1;
  436. int idzapamietane;
  437. cout <<"Adres Kuwety: ";
  438. cin >> adres_kuwety;
  439. cout << "Podaj Rase: " ;
  440. cin >> rasa;
  441. cout << "Podaj Imie: ";
  442. cin >> imionaa;
  443. cout << "Podaj wiek Kota: ";
  444. cin >> wiek;
  445. cout << endl;
  446. idz += i;
  447. Kot *K = new Kot(idz,imionaa,rasa, wiek,adres_kuwety);
  448. Add2End(K);
  449. }
  450.  
  451.  
  452. }
  453. }
  454. Element * Utworz_obiekt_takiej_klasy(string Nazwa)
  455. {
  456. if (Nazwa == "Kot")
  457. {
  458. return new Kot();
  459. }
  460. else if (Nazwa == "Pies")
  461. {
  462. return new Pies();
  463. }
  464. else
  465. {
  466. cout << " Blad Zoo::Utworz_obiekt_takiej_klasy" << Nazwa;
  467. exit(1);
  468. }
  469. }
  470. void UsunZwierze()
  471. {
  472. Print();
  473. cout << "Podaj id:"<<endl;
  474. int id;
  475. cin >> id;
  476. Element *Z = Znajdz(id);
  477. if(Z)
  478. {
  479. cout << "Czy chcesz usunac:(T/N)"<<endl;
  480. Z->Print();
  481. string d;
  482. cin >> d;
  483. if(d == "t" || d == "T")
  484. {
  485. Wyjmij(Z);
  486. delete Z;
  487. Ponumeruj();
  488. }
  489. }
  490. else
  491. {
  492. cout << "Nie ma takiego ID";
  493. }
  494. system("pause");
  495. }
  496. void SortZoo()
  497. {
  498. Zoo Z;
  499. while(Pierwszy)
  500. {
  501. Element * E;
  502. E = Pierwszy;
  503. Wyjmij(Pierwszy);
  504. Z.AddSort(E);
  505.  
  506. }
  507. Pierwszy = Z.Pierwszy;
  508. Ostatni = Z.Ostatni;
  509. Z.Pierwszy = NULL;
  510. Ilosc = Z.Ilosc;
  511. Z.Pierwszy = NULL;
  512. Z.Ostatni = NULL;
  513. }
  514.  
  515. };
  516. class Ekran{
  517. public:
  518. void Menu()
  519. {
  520. system("cls");
  521. cout << "Menu podopiecznych |" <<endl;
  522. cout << "-------------------|" <<endl;
  523. cout << "0. Wyjscie |" << endl;
  524. cout << "-------------------|" <<endl;
  525. cout << "1. Wydrukuj |" << endl;
  526. cout << "-------------------|" <<endl;
  527. cout << "2. Zapisz |" << endl;
  528. cout << "-------------------|" <<endl;
  529. cout << "3. Dodaj zwierze |" <<endl ;
  530. cout << "-------------------|" <<endl;
  531. cout << "4. Usun zwierze |"<<endl;
  532. cout << "-------------------|" <<endl;
  533. cout << "5. Sort |"<<endl;
  534. cout << "-------------------|" <<endl;
  535. cout << "6. Dopisz Zwierze |"<<endl;
  536. cout << "-------------------|" <<endl;
  537. cout << "Wybierz opcje: " ;
  538. }
  539. };
  540. int main(int argc, char** argv) {
  541.  
  542. Zoo Z;
  543. int zapamietanieid;
  544. int opcja = -1;
  545. while(opcja!=0)
  546. {
  547.  
  548. Ekran E;
  549. E.Menu();
  550. cin >> opcja;
  551. switch(opcja)
  552. {
  553. case 0:
  554. cout << "Dziekujemy za skorzystanie. Zyczymy milego dnia." << endl; break;
  555. case 1: Z.Print();system("PAUSE");break;
  556. case 2: Z.Zapisz_do_pliku("Schronisko.txt");break;
  557. case 3: Z.Dodaj_Zwierze();break;
  558. case 4:Z.UsunZwierze();break;
  559. case 5:Z.SortZoo();
  560. case 6:;break;
  561. default:
  562. cout << "zla opcja";
  563. system("PAUSE");
  564. }
  565. }
  566. return 0;
  567. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement