Advertisement
Guest User

Untitled

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