Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.46 KB | None | 0 0
  1. #include<iostream>
  2. #include<string.h>
  3. #include<ctype.h>
  4. using namespace std;
  5.  
  6. class Date
  7. {
  8. public:
  9.         int dd,mm, yy;
  10.     Date(int d=1,int m=1,int g=1900)
  11.     {
  12.         dd=d;
  13.         mm=m;
  14.         yy=g;
  15.     }
  16.     static int compare(Date d1,Date d2)
  17.     {
  18.         if(d1.yy<d2.yy)
  19.             return 1;
  20.         else if (d1.yy>d2.yy)
  21.             return -1;
  22.         else if (d1.mm<d2.mm)
  23.             return 1;
  24.         else if (d1.mm>d2.mm)
  25.             return -1;
  26.         else if (d1.dd<d2.mm)
  27.             return 1;
  28.         else if (d1.dd>d2.dd)
  29.             return -1;
  30.         else
  31.             return 0;
  32.     }
  33.     int getDay() const
  34.     {
  35.         return dd;
  36.     }
  37.     int getMonth()const
  38.     {
  39.         return mm;
  40.     }
  41.     int getYear()const
  42.     {
  43.         return yy;
  44.     }
  45. };
  46.  
  47. class OpisNaTransakcija:public Date
  48. {
  49. //your code here
  50. private:
  51.     char *imeNaNaloguvac;
  52.     char brSmetkaNaNalogodavacot[16];
  53.     float iznosNaTransakcija;
  54. public:
  55.     OpisNaTransakcija (char *imeNaNaloguvac, char [16] brSmetkaNaNalogodavacot, float iznosNaTransakcija,int dd,int mm,int yy):Date (dd,mm,yy)
  56.     {
  57.         delete [ ] this->imeNaNaloguvac;
  58.         imeNaNaloguvac=new char [strlen(this->imeNaNaloguvac)+1];
  59.         strcpy(this->imeNaNaloguvac, imeNaNaloguvac);
  60.         strcpy(this->brSmetkaNaNalogodavacot, brSmetkaNaNalogodavacot);
  61.         this->iznosNaTransakcija = iznosNaTransakcija;
  62.     }
  63.  
  64.     void exceptionThrow()
  65.     {
  66.         for(int i=0; i<16; i++)
  67.         {
  68.             if(!isdigit(brSmetkaNaNalogodavacot[i]))
  69.             {
  70.                 throw InvalidAccountNumber("Non-digit account number format");
  71.                 // break;
  72.             }
  73.             if(brSmetkaNaNalogodavacot.length() != 15 )
  74.                 throw InvalidAccountNumber("Error in the number of chars \n");
  75.         }
  76.     }
  77.     friend ostream& operator<< (ostream &out, const OpisNaTransakcija &c)
  78.     {
  79.         if(this->iznosNaTransakcija > 0 ){
  80.             return out << "Inflow: "<<imeNaNaloguvac<<"("<<brSmetka<<")"<<"-"<<Date()<<endl;
  81.         }
  82.         if(this->iznosNaTransakcija < 0){
  83.             cout<<"Outflow: "<<this->imeNaNaloguvac<<"("<<this->brSmetka<<")"<<"-"<<this->Date()<<endl;
  84.         }
  85.     }
  86. };
  87. class OpisNaTransakciskaSmetka{
  88. private:
  89.     char *imeNaLice;
  90.     char brSmetka[16];
  91.     OpisNaTransakcija *listaOdTranskacii;
  92.     int brTranskacii;
  93.     int kapacitetNaListata;
  94. public:
  95.     OpisNaTransakciskaSmetka(){listaOdTranskacii = new OpisNaTransakcija[0];}
  96.     OpisNaTransakciskaSmetka(const *char imeNaLice, const *char brSmetka,int brTranskacii, int kapacitetNaListata,OpisNaTransakcija *listaOdTranskacii){
  97.         imeNaLice = new char [strlen(this->imeNaLice)+1];
  98.         strcpy(this->imeNaLice,imeNaLice);
  99.         strcpy(this->brSmetka,brSmetka);
  100.         listaOdTranskacii = new OpisNaTransakcija[this->brTranskacii];
  101.         for(int i = 0; i < this->brTranskacii; i++){
  102.             listaOdTranskacii[i] = this->listaOdTranskacii[i];
  103.         }
  104.         brTranskacii = this->brTranskacii;
  105.         kapacitetNaListata = this->kapacitetNaListata;
  106.     }
  107.  
  108.  
  109.     OpisNaTransakciskaSmetka(const OpisNaTransakciskaSmetka &o){
  110.      imeNaLice = new char[strlen(o.imeNaLice)+1];
  111.      strcpy(imeNaLice,o.imeNaLice);
  112.      strcpy(brSmetka,o.brSmetka);
  113.      listaOdTranskacii = new OpisNaTransakcija[o.brTranskacii];
  114.      for(int i=o;i<o.brTranskacii;i++)
  115.         listaOdTranskacii[i]=o.listaOdTranskacii[i];
  116.      brTranskacii = o.brTranskacii;
  117.      kapacitetNaListata = o.kapacitetNaListata;
  118.     }
  119.     OpisNaTransakciskaSmetka& operator= (const OpisNaTransakciskaSmetka &o){
  120.         if(this->!=&o){
  121.           delete [] listaOdTranskacii;
  122.           strcpy(imeNaLice, o.imeNaLice);
  123.           listaOdTranskacii = new OpisNaTransakcija[o.kapacitetNaListata];
  124.           for(int i=0; i<o.kapacitetNaListata; i++){
  125.             listaOdTranskacii[i] = o.listaOdTranskacii[i];
  126.             kapacitetNaListata = o.kapacitetNaListata;
  127.           }
  128.           return *this;
  129.         }
  130.  
  131.     }
  132.     void setKapacitetNaListata(){
  133.         kapacitetNaListata = 3;
  134.     }
  135.     void setBrTransakacii(){
  136.         brTranskacii = 0;
  137.     }
  138.     void addTransaction(OpisNaTransakcija){
  139.        // IF USLOV !!!!
  140.         if ()
  141.         {
  142.  
  143.         }
  144.  
  145.       else
  146.       {
  147.           OpisNaTransakcija *temp;
  148.       temp = new OpisNaTransakcija[kapacitetNaListata];
  149.       for(int i=0; i<kapacitetNaListata; i++){
  150.         temp[i]= listaOdTranskacii[i];
  151.       }
  152.         delete [] listaOdTranskacii;
  153.         listaOdTranskacii = new OpisNaTransakcija[kapacitetNaListata*2];
  154.         for(int i=0;i<kapacitetNaListata;i++){
  155.           listaOdTranskacii[i]=temp[i];
  156.         }
  157.         listaOdTranskacii[kapacitetNaListata]=OpisNaTransakcija;
  158.         kapacitetNaListata*2;
  159.         delete [] temp;
  160.       }
  161.  
  162.     }
  163.     void reportTransaction(Date from, Date to, bool isInflow){
  164.  
  165.     }
  166.  
  167.     float getBalance(){
  168.  
  169.     }
  170.  
  171.  
  172.  
  173. };
  174. class InvalidAccountNumber
  175. {
  176. private:
  177.     char text[50];
  178. public:
  179.     InvalidAccountNumber(char *text)
  180.     {
  181.         strcpy(this->text,text);
  182.     }
  183.     void print()
  184.     {
  185.         cout<< text;
  186.     }
  187. };
  188.  
  189. int main()
  190. {
  191.  
  192.     char name[50],number[16];
  193.     float amount;
  194.     int d,m,y;
  195.     int n;
  196.     bool isInflow;
  197.     TransactionAccount ta;
  198.     int testcase;
  199.     cin>>testcase;
  200.  
  201.     switch (testcase)
  202.     {
  203.     case 1:
  204.     {
  205.         cout<<"------Transaction test------"<<endl;
  206.         cin>>name;
  207.         cin>>number;
  208.         cin>>amount;
  209.         cin>>d>>m>>y;
  210.         Transaction t(name,number,amount,Date(d,m,y));
  211.         cout<<t;
  212.     }
  213.     break;
  214.     case 2:
  215.     {
  216.         cout<<"------TransactionAccount test:constructor, desctuctor & get-functions------"<<endl;
  217.         cin>>name;
  218.         cin>>number;
  219.         TransactionAccount ta(name,number);
  220.         cin>>n;
  221.         for (int j=0; j<n; j++)
  222.         {
  223.  
  224.             cin>>name>>number>>amount>>d>>m>>y;
  225.             Transaction t(name,number,amount,Date(d,m,y));
  226.             ta.addTransaction(t);
  227.  
  228.         }
  229.         cout<<"Capacity: "<<ta.getTransCapacity()<<endl;
  230.         cout<<"Number of elements: "<<ta.getTransNumber()<<endl;
  231.         cin>>n;
  232.         cout<<"The element on position "<<n<<" is "<<endl;
  233.         cout<<(ta.getTransList())[n];
  234.     }
  235.     break;
  236.     case 3:
  237.     {
  238.         cout<<"------TransactionAccount: getSaldo------"<<endl;
  239.         cin>>name;
  240.         cin>>number;
  241.         TransactionAccount ta(name,number);
  242.         cin>>n;
  243.         for (int j=0; j<n; j++)
  244.         {
  245.  
  246.             cin>>name>>number>>amount>>d>>m>>y;
  247.             Transaction t(name,number,amount,Date(d,m,y));
  248.             ta.addTransaction(t);
  249.  
  250.         }
  251.         cout<<"Balance: "<<ta.getBalance()<<endl;
  252.     }
  253.     break;
  254.     case 4:
  255.     {
  256.         cout<<"------TransactionAccount: reportTransaction & Exception------"<<endl;
  257.         cin>>name;
  258.         cin>>number;
  259.         ta=TransactionAccount(name,number);
  260.         cin>>n;
  261.         for (int j=0; j<n; j++)
  262.         {
  263.             try
  264.             {
  265.                 cin>>name>>number>>amount>>d>>m>>y;
  266.                 Transaction t(name,number,amount,Date(d,m,y));
  267.                 ta.addTransaction(t);
  268.             }
  269.             catch (InvalidAccountNumber e)
  270.             {
  271.                 e.print();
  272.             }
  273.         }
  274.         cin>>d>>m>>y;
  275.         Date d1(d,m,y);
  276.         cin>>d>>m>>y;
  277.         Date d2(d,m,y);
  278.         cin>>isInflow;
  279.         ta.reportTransaction(d1,d2,isInflow);
  280.     }
  281.     break;
  282.  
  283.     };
  284.  
  285.     return 0;
  286. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement