Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstring>
- using namespace std;
- class NotSupportedCurrencyException{
- private:
- char *valuta;
- public:
- NotSupportedCurrencyException(char *valuta){
- this -> valuta = new char[3];
- strcpy(this -> valuta, valuta);
- }
- void pecatiPoraka(){
- cout<< valuta << " is not a supported currency" << endl;
- }
- };
- class InvalidDateException{
- private:
- int den;
- int mesec;
- int godina;
- public:
- InvalidDateException(int den, int mesec, int godina){
- this -> den = den;
- this -> mesec = mesec;
- this -> godina = godina;
- }
- void pecatiPoraka(){
- cout<< "Invalid Date " << den << "/" << mesec << "/" << godina << endl;
- }
- };
- class Transakcija {
- protected:
- int den;
- int mesec;
- int godina;
- double iznos;
- public:
- static double EUR;
- static double USD;
- static void setEUR(double newEUR);
- static void setUSD(double newUSD);
- Transakcija(int den, int mesec, int godina, int iznos){
- if(den < 1 || den > 31 || mesec < 1 || mesec > 12 ) throw InvalidDateException(den, mesec, godina);
- this -> den = den;
- this -> mesec = mesec;
- this -> godina = godina;
- this -> iznos = iznos;
- }
- virtual double voDenari() = 0;
- virtual void pecati() = 0;
- };
- double Transakcija::EUR = 61;
- double Transakcija::USD = 50;
- void Transakcija::setEUR(double newEUR){
- EUR = newEUR;
- }
- void Transakcija::setUSD(double newUSD){
- USD = newUSD;
- }
- class DenarskaTransakcija : public Transakcija {
- public:
- DenarskaTransakcija(int den, int mesec, int godina, double iznos)
- :Transakcija(den, mesec, godina, iznos){}
- double voDenari(){
- return iznos;
- }
- void pecati(){
- cout<<den<<"/"<<mesec<<"/"<<godina<<" "<<iznos<<endl;
- }
- };
- class DeviznaTransakcija : public Transakcija {
- private:
- char valuta[3];
- public:
- DeviznaTransakcija(int den, int mesec, int godina, double iznos, char *valuta)
- :Transakcija(den, mesec, godina, iznos){
- if(strcmp(valuta, "USD") != 0 & strcmp(valuta, "EUR") != 0) throw NotSupportedCurrencyException(valuta);
- strcpy(this->valuta, valuta);
- }
- double voDenari(){
- if(strcmp(valuta, "USD") == 0) return this -> iznos * this -> USD;
- return this -> iznos * this -> EUR;
- }
- void pecati(){
- cout<<den<<"/"<<mesec<<"/"<<godina<<" "<<iznos<<" "<<valuta<<endl;
- }
- };
- class Smetka {
- private:
- Transakcija **transakcii;
- int brTransakcii;
- char brojSmetka[15];
- double saldoDenari;
- public:
- Smetka(char *brojSmetka, double saldoDenari){
- strcpy(this->brojSmetka, brojSmetka);
- this -> saldoDenari = saldoDenari;
- this -> brTransakcii = 0;
- transakcii = new Transakcija*[this -> brTransakcii];
- }
- ~Smetka(){
- delete [] transakcii;
- }
- Smetka& operator+=(Transakcija *novaTransakcija){
- Transakcija** temp = new Transakcija*[brTransakcii + 1];
- for(int i = 0; i < brTransakcii; i++){
- temp[i] = transakcii[i];
- }
- temp[brTransakcii] = novaTransakcija;
- brTransakcii++;
- delete [] transakcii;
- transakcii = temp;
- return *this;
- }
- void pecatiTransakcii(){
- for(int i = 0; i < brTransakcii; i++){
- transakcii[i] -> pecati();
- }
- }
- void izvestajVoDenari(){
- double saldo = saldoDenari;
- for(int i = 0; i < brTransakcii; i++){
- saldo += transakcii[i] -> voDenari();
- }
- cout<<"Korisnikot so smetkaa: "<< brojSmetka << " ima momentalno saldo od "<< saldo <<" MKD"<<endl;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement