Advertisement
Guest User

Lalalallala

a guest
May 16th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.71 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4.  
  5. class NotSupportedCurrencyException{
  6. private:
  7. char *valuta;
  8. public:
  9. NotSupportedCurrencyException(char *valuta){
  10. this -> valuta = new char[3];
  11. strcpy(this -> valuta, valuta);
  12. }
  13. void pecatiPoraka(){
  14. cout<< valuta << " is not a supported currency" << endl;
  15. }
  16. };
  17. class InvalidDateException{
  18. private:
  19. int den;
  20. int mesec;
  21. int godina;
  22. public:
  23. InvalidDateException(int den, int mesec, int godina){
  24. this -> den = den;
  25. this -> mesec = mesec;
  26. this -> godina = godina;
  27. }
  28. void pecatiPoraka(){
  29. cout<< "Invalid Date " << den << "/" << mesec << "/" << godina << endl;
  30. }
  31. };
  32.  
  33. class Transakcija {
  34. protected:
  35. int den;
  36. int mesec;
  37. int godina;
  38. double iznos;
  39. public:
  40. static double EUR;
  41. static double USD;
  42. static void setEUR(double newEUR);
  43. static void setUSD(double newUSD);
  44. Transakcija(int den, int mesec, int godina, int iznos){
  45. if(den < 1 || den > 31 || mesec < 1 || mesec > 12 ) throw InvalidDateException(den, mesec, godina);
  46. this -> den = den;
  47. this -> mesec = mesec;
  48. this -> godina = godina;
  49. this -> iznos = iznos;
  50. }
  51. virtual double voDenari() = 0;
  52. virtual void pecati() = 0;
  53. };
  54.  
  55. double Transakcija::EUR = 61;
  56. double Transakcija::USD = 50;
  57. void Transakcija::setEUR(double newEUR){
  58. EUR = newEUR;
  59. }
  60. void Transakcija::setUSD(double newUSD){
  61. USD = newUSD;
  62. }
  63.  
  64. class DenarskaTransakcija : public Transakcija {
  65.  
  66. public:
  67. DenarskaTransakcija(int den, int mesec, int godina, double iznos)
  68. :Transakcija(den, mesec, godina, iznos){}
  69. double voDenari(){
  70. return iznos;
  71. }
  72. void pecati(){
  73. cout<<den<<"/"<<mesec<<"/"<<godina<<" "<<iznos<<endl;
  74. }
  75. };
  76.  
  77. class DeviznaTransakcija : public Transakcija {
  78. private:
  79. char valuta[3];
  80. public:
  81. DeviznaTransakcija(int den, int mesec, int godina, double iznos, char *valuta)
  82. :Transakcija(den, mesec, godina, iznos){
  83. if(strcmp(valuta, "USD") != 0 & strcmp(valuta, "EUR") != 0) throw NotSupportedCurrencyException(valuta);
  84. strcpy(this->valuta, valuta);
  85. }
  86. double voDenari(){
  87. if(strcmp(valuta, "USD") == 0) return this -> iznos * this -> USD;
  88. return this -> iznos * this -> EUR;
  89. }
  90. void pecati(){
  91. cout<<den<<"/"<<mesec<<"/"<<godina<<" "<<iznos<<" "<<valuta<<endl;
  92. }
  93. };
  94.  
  95. class Smetka {
  96. private:
  97. Transakcija **transakcii;
  98. int brTransakcii;
  99. char brojSmetka[15];
  100. double saldoDenari;
  101. public:
  102. Smetka(char *brojSmetka, double saldoDenari){
  103. strcpy(this->brojSmetka, brojSmetka);
  104. this -> saldoDenari = saldoDenari;
  105. this -> brTransakcii = 0;
  106. transakcii = new Transakcija*[this -> brTransakcii];
  107. }
  108. ~Smetka(){
  109. delete [] transakcii;
  110. }
  111. Smetka& operator+=(Transakcija *novaTransakcija){
  112. Transakcija** temp = new Transakcija*[brTransakcii + 1];
  113. for(int i = 0; i < brTransakcii; i++){
  114. temp[i] = transakcii[i];
  115. }
  116. temp[brTransakcii] = novaTransakcija;
  117. brTransakcii++;
  118. delete [] transakcii;
  119. transakcii = temp;
  120. return *this;
  121. }
  122. void pecatiTransakcii(){
  123. for(int i = 0; i < brTransakcii; i++){
  124. transakcii[i] -> pecati();
  125. }
  126. }
  127. void izvestajVoDenari(){
  128. double saldo = saldoDenari;
  129. for(int i = 0; i < brTransakcii; i++){
  130. saldo += transakcii[i] -> voDenari();
  131. }
  132. cout<<"Korisnikot so smetkaa: "<< brojSmetka << " ima momentalno saldo od "<< saldo <<" MKD"<<endl;
  133. }
  134. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement