Advertisement
StefiIOE

karticka Execution timeout

May 24th, 2019
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.54 KB | None | 0 0
  1. #include<iostream>
  2. #include<string.h>
  3. using namespace std;
  4.  
  5. class OutOfBoundException {
  6. public
  7. void msg() {
  8. cout<<"Brojot na pin kodovi nemoze da go nadmine dozvolenoto"<<endl;
  9. }
  10. };
  11.  
  12. class Karticka {
  13. protected:
  14. char smetka[16];
  15. int pin;
  16. bool povekjePin;
  17. public:
  18. Karticka(char* smetka,int pin) {
  19. strcpy(this->smetka,smetka);
  20. this->pin=pin;
  21. this->povekjePin=false;
  22. }
  23. /** void copy(const Karticka &k)
  24. {
  25. strcpy(this->smetka,k.smetka);
  26. this->pin=k.pin;
  27. this->povekjePin=k.povekjePin;
  28. }**/
  29. friend ostream &operator<<(ostream &out , const Karticka &k) {
  30. out<<k.smetka<<": "<<k.tezinaProbivanje()<<endl;
  31. return out;
  32. }
  33. char *getSmetka() {
  34. return smetka;
  35. }
  36.  
  37. bool getDopolnitelenPin()
  38. {
  39. return povekjePin;
  40. }
  41.  
  42.  
  43.  
  44. virtual int tezinaProbivanje() const
  45. {
  46. int nov=pin;
  47. int brojac=0;
  48. while(nov) {
  49. brojac/=10;
  50. brojac++;
  51. }
  52. return brojac;
  53.  
  54. }
  55.  
  56. ~Karticka () {}
  57.  
  58. };
  59.  
  60. class SpecijalnaKarticka:public Karticka {
  61. private:
  62. int *pinKodovi;
  63. int brpin;
  64. const static int P;
  65. public:
  66. SpecijalnaKarticka(char *smetka,int pin):Karticka(smetka,pin) {
  67.  
  68. //this->brpin=brpin;
  69.  
  70. this->pinKodovi=new int[brpin];
  71.  
  72. for(int i = 0 ; i <brpin; i++) {
  73. this->pinKodovi[i]=pinKodovi[i];
  74. }
  75. }
  76. /** SpecijalnaKarticka(const SpecijalnaKarticka &s)
  77. {
  78. Karticka ::copy(s);
  79.  
  80. for(int i = 0 ; i <brpin; i++)
  81. {
  82. this->pinKodovi[i]=s.pinKodovi[i];
  83. }
  84.  
  85.  
  86. }**/
  87.  
  88. int tezinaProbivanje() {
  89. return Karticka ::tezinaProbivanje()+brpin;
  90. }
  91.  
  92.  
  93. int getPIN() {
  94. return brpin;
  95. }
  96.  
  97.  
  98.  
  99. // friend ostream &operator<<(ostream &out, const SpecijalnaKarticka &s) {
  100. // out<<s.smetka<<": "<<s.tezinaProbivanje()<<endl;
  101. // return out;
  102. // }
  103.  
  104. void operator+=(int novPin)
  105. {
  106. if(brpin==novPin) {
  107. throw OutOfBoundException();
  108. } else pinKodovi[brpin]+=novPin;
  109. brpin++;
  110. }
  111.  
  112. ~SpecijalnaKarticka() {
  113. delete [] pinKodovi;
  114. }
  115.  
  116. };
  117. const int SpecijalnaKarticka ::P=4;
  118.  
  119. class Banka {
  120. private:
  121. char naziv[30];
  122. Karticka *karticki[20];
  123. int broj;
  124. static int LIMIT;
  125. public:
  126. Banka(char *naziv, Karticka** karticki,int broj ) {
  127. strcpy(this->naziv,naziv);
  128. for (int i=0; i<broj; i++) {
  129. //ako kartickata ima dopolnitelni pin kodovi
  130. if (karticki[i]->getDopolnitelenPin()) {
  131. this->karticki[i]=new SpecijalnaKarticka(*dynamic_cast<SpecijalnaKarticka*>(karticki[i]));
  132. } else this->karticki[i]=new Karticka(*karticki[i]);
  133. }
  134. this->broj=broj;
  135. }
  136. ~Banka() {
  137. for (int i=0; i<broj; i++) delete karticki[i];
  138. }
  139.  
  140.  
  141. static void setLIMIT(int LIMIT) {
  142. Banka::LIMIT=LIMIT;
  143. }
  144.  
  145. void pecatiKarticki() {
  146. cout<<"Vo bankata"<<naziv<< "moze da se probijat kartickite:"<<endl;
  147. for(int i = 0 ; i < broj; i++) {
  148. if(karticki[i]->tezinaProbivanje()<=LIMIT) {
  149. cout<<(*karticki[i])<<endl;
  150. }
  151. }
  152.  
  153. }
  154.  
  155. void dodadiDopolnitelenPin(char * smetka, int novPin) {
  156.  
  157. for(int i = 0 ; i < broj; i++) {
  158. if(strcmp(karticki[i]->getSmetka(),smetka)==0) {
  159. SpecijalnaKarticka *sk=dynamic_cast<SpecijalnaKarticka*>(karticki[i]);
  160. if(sk) {
  161. *(sk)+=novPin;
  162. }
  163. }
  164. }
  165. }
  166.  
  167.  
  168.  
  169.  
  170.  
  171. };
  172. int Banka ::LIMIT=7;
  173.  
  174.  
  175. int main() {
  176.  
  177. Karticka **niza;
  178. int n,m,pin;
  179. char smetka[16];
  180. bool daliDopolnitelniPin;
  181. cin>>n;
  182. niza=new Karticka*[n];
  183. for (int i=0; i<n; i++) {
  184. cin>>smetka;
  185. cin>>pin;
  186. cin>>daliDopolnitelniPin;
  187. if (!daliDopolnitelniPin)
  188. niza[i]=new Karticka(smetka,pin);
  189. else
  190. niza[i]=new SpecijalnaKarticka(smetka,pin);
  191. }
  192.  
  193. Banka komercijalna("Komercijalna",niza,n);
  194. for (int i=0; i<n; i++) delete niza[i];
  195. delete [] niza;
  196. cin>>m;
  197. for (int i=0; i<m; i++) {
  198. cin>>smetka>>pin;
  199.  
  200. }
  201.  
  202. try{
  203.  
  204. komercijalna.dodadiDopolnitelenPin(smetka,pin);
  205. }
  206. catch(OutOfBoundException o)
  207. {
  208. o.msg();
  209.  
  210. }
  211.  
  212.  
  213. Banka::setLIMIT(5);
  214.  
  215. komercijalna.pecatiKarticki();
  216.  
  217. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement