SHARE
TWEET

Lalalallala

a guest May 16th, 2019 78 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. };
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top