fork download
  1. #include <iostream>
  2. #include <cstring>
  3. #include <list>
  4.  
  5. using namespace std;
  6.  
  7. struct przesylka
  8. {
  9. int numer_przesylki;
  10. char adresat[70];
  11. char dzielnica[30];
  12. char towar[30];
  13. int ciezar;
  14. int wartosc;
  15. };
  16.  
  17. class KURIER
  18. {
  19. public:
  20. char NR[30];
  21. int LAD;
  22. list <przesylka> PACZKI;
  23. int IleElementow;
  24. KURIER();
  25. KURIER(char *numer, int lad)
  26. {
  27. strcpy(NR,numer);
  28. LAD=lad;
  29. IleElementow=0;
  30. }
  31.  
  32. przesylka TworzPrzesylke(int NUMER, char *ADRESAT, char *DZIELNICA, char *TOWAR, int CIEZAR, int WARTOSC)
  33. {
  34. przesylka nowa;
  35. nowa.numer_przesylki=NUMER;
  36. strcpy(nowa.adresat,ADRESAT);
  37. strcpy(nowa.dzielnica,DZIELNICA);
  38. strcpy(nowa.towar,TOWAR);
  39. nowa.ciezar=CIEZAR;
  40. nowa.wartosc=WARTOSC;
  41. return nowa;
  42. }
  43.  
  44. virtual void WLO_Z(przesylka paczka)//wkladanie przesylki
  45. {
  46. try
  47. {
  48. if(IleElementow>=LAD) throw 0;
  49.  
  50.  
  51. PACZKI.push_back(paczka);
  52. IleElementow++;
  53. }
  54. catch (int nr)
  55. {
  56. if(nr==0)
  57. cout<<"Nie moge zaladowac, samochod jest pelen"<<endl;
  58. }
  59. }
  60.  
  61. void WYL_P(int ident)//wyladowanie wskazanej identyfikatorem paczki
  62. {
  63. bool CzyZrobione=0;
  64. try
  65. {
  66. for(list<przesylka>::iterator it=PACZKI.begin(); it!=PACZKI.end(); it++)
  67. {
  68. if(it->numer_przesylki==ident)
  69. {
  70. PACZKI.pop_back();
  71. CzyZrobione=1;
  72. break;
  73. }
  74. }
  75. if(CzyZrobione==0)throw 0;
  76. IleElementow-=CzyZrobione;
  77. }
  78. catch (int nr)
  79. {
  80. if(nr==0)cout<<"Nie ma takiej paczki"<<endl;
  81. }
  82.  
  83. }
  84.  
  85. bool CzyToSamo(char *a,char *b)
  86. {
  87. for(int i=0;i<strlen(a);i++)
  88. {
  89. if(a[i]!=b[i])return 0;
  90. }
  91. return 1;
  92. }
  93.  
  94.  
  95. //O TA FUNKCJE MI CHODZI!!!
  96. void WYL_D(char *dzielnica)//wyladowanie wszystkich z tej samej dzielnicy
  97. {
  98. try
  99. {
  100. int IleWypakowalo=0;
  101. // for(list<przesylka>::iterator it=PACZKI.begin(); it!=PACZKI.end(); it++)
  102. // {
  103. // if(CzyToSamo(dzielnica,(*it).dzielnica)==1)
  104. // {
  105. // it = PACZKI.erase(it);
  106. // IleWypakowalo++;
  107. // }
  108. // }
  109. list<przesylka>::iterator it = PACZKI.begin();
  110. while(it != PACZKI.end()) {
  111. if (CzyToSamo(dzielnica, it->dzielnica)) {
  112. it = PACZKI.erase(it);
  113. IleWypakowalo++;
  114. } else {
  115. ++it;
  116. }
  117. }
  118. if(IleWypakowalo==0) throw 0;
  119. cout<<"Wypakowalem "<<IleWypakowalo<<" paczek"<<endl;
  120. IleElementow-=IleWypakowalo;
  121. }
  122. catch(int nr)
  123. {
  124. if(nr==0)cout<<"Nie ma takiej dzielnicy, nic nie wypakowalem"<<endl;
  125. }
  126. }
  127.  
  128.  
  129.  
  130. void Wyswietl()
  131. {
  132. int numer=1;
  133. try
  134. {
  135. if(IleElementow==0)throw 0;
  136. cout<<"Wyswietlam przesylki: "<<endl;
  137. for(list<przesylka>::iterator it=PACZKI.begin(); it!=PACZKI.end(); it++)
  138. {
  139. cout<<numer<<": "<<(*it).numer_przesylki<<" "<<(*it).adresat<<" "<<(*it).dzielnica<<" "<<(*it).towar<<" masa: "<<(*it).ciezar<<" wart: "<<(*it).wartosc<<endl;
  140. numer++;
  141. }
  142. }
  143. catch (int nr)
  144. {
  145. if(nr==0)cout<<"Samochod jest pusty, nie mam co wyswietlic"<<endl;
  146. }
  147.  
  148. }
  149.  
  150. };
  151.  
  152. int main()
  153. {
  154. //TworzPrzesylke(int NUMER, char *ADRESAT, char *DZIELNICA, char *TOWAR, int CIEZAR, int WARTOSC)
  155. KURIER a("PO654SU",3);
  156. przesylka p1,p2,p3,p4,p5,p6,p7,p8,p9;
  157. p1=a.TworzPrzesylke(1,"Nowak","Wilda","stol",10,500);
  158. p2=a.TworzPrzesylke(2,"Kowalski","Wilda","krzeslo",5,100);
  159. p3=a.TworzPrzesylke(3,"Inne","Wilda","komputer",20,5000);
  160. p4=a.TworzPrzesylke(4,"Zenon","Grunwald","monitor",3,1000);
  161. p5=a.TworzPrzesylke(5,"Jan","Grunwald","monitor",3,66);
  162. p6=a.TworzPrzesylke(6,"Krzysiek","Wilda","monitor",3,3000);
  163. p7=a.TworzPrzesylke(7,"Adam","Grunwald","monitor",3,1010);
  164. p8=a.TworzPrzesylke(7,"Adam","Wilda","monitor",3,1010);
  165.  
  166. cout<<"Wyswietlam na poczatek"<<endl;
  167. a.Wyswietl();
  168. cout<<"pakuje 1"<<endl;
  169. a.WLO_Z(p1);
  170. cout<<"pakuje 2"<<endl;
  171. a.WLO_Z(p2);
  172. cout<<"pakuje 3"<<endl;
  173. a.WLO_Z(p3);
  174. cout<<"pakuje 4"<<endl;
  175. a.WLO_Z(p4);
  176. cout<<"wyswietlam"<<endl;
  177. a.Wyswietl();
  178. cout<<"wypakowuje 2"<<endl;
  179. a.WYL_P(2);
  180. a.Wyswietl();
  181. cout<<"Wypakowuje wilde"<<endl;
  182. a.WYL_D("Wilda");
  183. a.Wyswietl();
  184.  
  185. cout<<endl<<endl;
  186. return 0;
  187. }
Success #stdin #stdout 0s 2988KB
stdin
Standard input is empty
stdout
Wyswietlam na poczatek
Samochod jest pusty, nie mam co wyswietlic
pakuje 1
pakuje 2
pakuje 3
pakuje 4
Nie moge zaladowac, samochod jest pelen
wyswietlam
Wyswietlam przesylki: 
1: 1 Nowak Wilda stol masa: 10 wart: 500
2: 2 Kowalski Wilda krzeslo masa: 5 wart: 100
3: 3 Inne Wilda komputer masa: 20 wart: 5000
wypakowuje 2
Wyswietlam przesylki: 
1: 1 Nowak Wilda stol masa: 10 wart: 500
2: 2 Kowalski Wilda krzeslo masa: 5 wart: 100
Wypakowuje wilde
Wypakowalem 2 paczek
Samochod jest pusty, nie mam co wyswietlic