Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string.h>
- #include<ctype.h>
- using namespace std;
- class Date
- {
- public:
- int dd,mm, yy;
- Date(int d=1,int m=1,int g=1900)
- {
- dd=d;
- mm=m;
- yy=g;
- }
- static int compare(Date d1,Date d2)
- {
- if(d1.yy<d2.yy)
- return 1;
- else if (d1.yy>d2.yy)
- return -1;
- else if (d1.mm<d2.mm)
- return 1;
- else if (d1.mm>d2.mm)
- return -1;
- else if (d1.dd<d2.mm)
- return 1;
- else if (d1.dd>d2.dd)
- return -1;
- else
- return 0;
- }
- int getDay() const
- {
- return dd;
- }
- int getMonth()const
- {
- return mm;
- }
- int getYear()const
- {
- return yy;
- }
- };
- class OpisNaTransakcija:public Date
- {
- //your code here
- private:
- char *imeNaNaloguvac;
- char brSmetkaNaNalogodavacot[16];
- float iznosNaTransakcija;
- public:
- OpisNaTransakcija (char *imeNaNaloguvac, char [16] brSmetkaNaNalogodavacot, float iznosNaTransakcija,int dd,int mm,int yy):Date (dd,mm,yy)
- {
- delete [ ] this->imeNaNaloguvac;
- imeNaNaloguvac=new char [strlen(this->imeNaNaloguvac)+1];
- strcpy(this->imeNaNaloguvac, imeNaNaloguvac);
- strcpy(this->brSmetkaNaNalogodavacot, brSmetkaNaNalogodavacot);
- this->iznosNaTransakcija = iznosNaTransakcija;
- }
- void exceptionThrow()
- {
- for(int i=0; i<16; i++)
- {
- if(!isdigit(brSmetkaNaNalogodavacot[i]))
- {
- throw InvalidAccountNumber("Non-digit account number format");
- // break;
- }
- if(brSmetkaNaNalogodavacot.length() != 15 )
- throw InvalidAccountNumber("Error in the number of chars \n");
- }
- }
- friend ostream& operator<< (ostream &out, const OpisNaTransakcija &c)
- {
- if(this->iznosNaTransakcija > 0 ){
- return out << "Inflow: "<<imeNaNaloguvac<<"("<<brSmetka<<")"<<"-"<<Date()<<endl;
- }
- if(this->iznosNaTransakcija < 0){
- cout<<"Outflow: "<<this->imeNaNaloguvac<<"("<<this->brSmetka<<")"<<"-"<<this->Date()<<endl;
- }
- }
- };
- class OpisNaTransakciskaSmetka{
- private:
- char *imeNaLice;
- char brSmetka[16];
- OpisNaTransakcija *listaOdTranskacii;
- int brTranskacii;
- int kapacitetNaListata;
- public:
- OpisNaTransakciskaSmetka(){listaOdTranskacii = new OpisNaTransakcija[0];}
- OpisNaTransakciskaSmetka(const *char imeNaLice, const *char brSmetka,int brTranskacii, int kapacitetNaListata,OpisNaTransakcija *listaOdTranskacii){
- imeNaLice = new char [strlen(this->imeNaLice)+1];
- strcpy(this->imeNaLice,imeNaLice);
- strcpy(this->brSmetka,brSmetka);
- listaOdTranskacii = new OpisNaTransakcija[this->brTranskacii];
- for(int i = 0; i < this->brTranskacii; i++){
- listaOdTranskacii[i] = this->listaOdTranskacii[i];
- }
- brTranskacii = this->brTranskacii;
- kapacitetNaListata = this->kapacitetNaListata;
- }
- OpisNaTransakciskaSmetka(const OpisNaTransakciskaSmetka &o){
- imeNaLice = new char[strlen(o.imeNaLice)+1];
- strcpy(imeNaLice,o.imeNaLice);
- strcpy(brSmetka,o.brSmetka);
- listaOdTranskacii = new OpisNaTransakcija[o.brTranskacii];
- for(int i=o;i<o.brTranskacii;i++)
- listaOdTranskacii[i]=o.listaOdTranskacii[i];
- brTranskacii = o.brTranskacii;
- kapacitetNaListata = o.kapacitetNaListata;
- }
- OpisNaTransakciskaSmetka& operator= (const OpisNaTransakciskaSmetka &o){
- if(this->!=&o){
- delete [] listaOdTranskacii;
- strcpy(imeNaLice, o.imeNaLice);
- listaOdTranskacii = new OpisNaTransakcija[o.kapacitetNaListata];
- for(int i=0; i<o.kapacitetNaListata; i++){
- listaOdTranskacii[i] = o.listaOdTranskacii[i];
- kapacitetNaListata = o.kapacitetNaListata;
- }
- return *this;
- }
- }
- void setKapacitetNaListata(){
- kapacitetNaListata = 3;
- }
- void setBrTransakacii(){
- brTranskacii = 0;
- }
- void addTransaction(OpisNaTransakcija){
- // IF USLOV !!!!
- if ()
- {
- }
- else
- {
- OpisNaTransakcija *temp;
- temp = new OpisNaTransakcija[kapacitetNaListata];
- for(int i=0; i<kapacitetNaListata; i++){
- temp[i]= listaOdTranskacii[i];
- }
- delete [] listaOdTranskacii;
- listaOdTranskacii = new OpisNaTransakcija[kapacitetNaListata*2];
- for(int i=0;i<kapacitetNaListata;i++){
- listaOdTranskacii[i]=temp[i];
- }
- listaOdTranskacii[kapacitetNaListata]=OpisNaTransakcija;
- kapacitetNaListata*2;
- delete [] temp;
- }
- }
- void reportTransaction(Date from, Date to, bool isInflow){
- }
- float getBalance(){
- }
- };
- class InvalidAccountNumber
- {
- private:
- char text[50];
- public:
- InvalidAccountNumber(char *text)
- {
- strcpy(this->text,text);
- }
- void print()
- {
- cout<< text;
- }
- };
- int main()
- {
- char name[50],number[16];
- float amount;
- int d,m,y;
- int n;
- bool isInflow;
- TransactionAccount ta;
- int testcase;
- cin>>testcase;
- switch (testcase)
- {
- case 1:
- {
- cout<<"------Transaction test------"<<endl;
- cin>>name;
- cin>>number;
- cin>>amount;
- cin>>d>>m>>y;
- Transaction t(name,number,amount,Date(d,m,y));
- cout<<t;
- }
- break;
- case 2:
- {
- cout<<"------TransactionAccount test:constructor, desctuctor & get-functions------"<<endl;
- cin>>name;
- cin>>number;
- TransactionAccount ta(name,number);
- cin>>n;
- for (int j=0; j<n; j++)
- {
- cin>>name>>number>>amount>>d>>m>>y;
- Transaction t(name,number,amount,Date(d,m,y));
- ta.addTransaction(t);
- }
- cout<<"Capacity: "<<ta.getTransCapacity()<<endl;
- cout<<"Number of elements: "<<ta.getTransNumber()<<endl;
- cin>>n;
- cout<<"The element on position "<<n<<" is "<<endl;
- cout<<(ta.getTransList())[n];
- }
- break;
- case 3:
- {
- cout<<"------TransactionAccount: getSaldo------"<<endl;
- cin>>name;
- cin>>number;
- TransactionAccount ta(name,number);
- cin>>n;
- for (int j=0; j<n; j++)
- {
- cin>>name>>number>>amount>>d>>m>>y;
- Transaction t(name,number,amount,Date(d,m,y));
- ta.addTransaction(t);
- }
- cout<<"Balance: "<<ta.getBalance()<<endl;
- }
- break;
- case 4:
- {
- cout<<"------TransactionAccount: reportTransaction & Exception------"<<endl;
- cin>>name;
- cin>>number;
- ta=TransactionAccount(name,number);
- cin>>n;
- for (int j=0; j<n; j++)
- {
- try
- {
- cin>>name>>number>>amount>>d>>m>>y;
- Transaction t(name,number,amount,Date(d,m,y));
- ta.addTransaction(t);
- }
- catch (InvalidAccountNumber e)
- {
- e.print();
- }
- }
- cin>>d>>m>>y;
- Date d1(d,m,y);
- cin>>d>>m>>y;
- Date d2(d,m,y);
- cin>>isInflow;
- ta.reportTransaction(d1,d2,isInflow);
- }
- break;
- };
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement