Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Par
- {
- char *kluc;
- float vrednost;
- public:
- Par()
- {
- kluc=new char[0];
- }
- Par(char *kluc,float vrednost)
- {
- this->kluc=new char[strlen(kluc)+1];
- strcpy(this->kluc,kluc);
- this->vrednost=vrednost;
- }
- Par(const Par &p)
- {
- kluc=new char[strlen(p.kluc)+1];
- strcpy(this->kluc,p.kluc);
- vrednost=p.vrednost;
- }
- Par &operator=(const Par &p)
- {
- if(this!=&p)
- {
- delete[]kluc;
- kluc=new char[strlen(p.kluc)+1];
- strcpy(this->kluc,p.kluc);
- vrednost=p.vrednost;
- }
- return *this;
- }
- ~Par()
- {
- delete[]kluc;
- }
- char *getKluc()
- {
- return kluc;
- }
- friend ostream &operator<<(ostream &out,const Par &p)
- {
- out<<"("<<p.kluc<<", "<<p.vrednost<<")"<<endl;
- return out;
- }
- Par &operator++()
- {
- vrednost++;
- return *this;
- }
- Par operator++(int)
- {
- Par p(*this);
- vrednost++;
- return p;
- }
- Par operator+(const Par &p)
- {
- if(strlen(kluc)>=strlen(p.kluc))
- {
- Par i(*this);
- i.vrednost=vrednost+p.vrednost;
- return i;
- }
- Par i(p);
- i.vrednost=vrednost+p.vrednost;
- return i;
- }
- bool operator==(const Par &p)
- {
- bool temp=true;
- if(strcmp(kluc,p.kluc))
- temp=false;
- if(vrednost!=p.vrednost)
- temp=false;
- return temp;
- }
- };
- class Kolekcija
- {
- Par *parovi;
- int broj;
- public:
- Kolekcija()
- {
- broj=0;
- parovi=new Par[0];
- }
- Kolekcija(const Kolekcija &p)
- {
- broj=p.broj;
- for(int i=0; i<broj; i++)
- {
- parovi[i]=p.parovi[i];
- }
- }
- Kolekcija &operator=(const Kolekcija &p)
- {
- if(this!=&p)
- {
- delete[]parovi;
- broj=p.broj;
- for(int i=0; i<broj; i++)
- {
- parovi[i]=p.parovi[i];
- }
- }
- return *this;
- }
- ~Kolekcija()
- {
- delete[]parovi;
- }
- Kolekcija &operator+=(Par &p)
- {
- Par *pom=new Par[broj+1];
- for(int i=0;i<broj;i++)
- {
- pom[i]=parovi[i];
- }
- pom[broj++]=p;
- delete[]parovi;
- parovi=pom;
- return *this;
- }
- friend ostream &operator<<(ostream &out,const Kolekcija &k)
- {
- out<<k.broj<<endl;
- for(int i=0;i<k.broj;i++)
- {
- out<<k.parovi[i];
- }
- }
- bool operator==(const Kolekcija &k)
- {
- int brojac=0;
- if(broj!=k.broj) return false;
- for(int i=0;i<broj;i++)
- {
- if(parovi[i]==k.parovi[i]) brojac++;
- }
- if(brojac==broj) return true;
- return false;
- }
- void najdi(const char *kluc)
- {
- for(int i=0;i<broj;i++)
- {
- if(!strcmp(parovi[i].getKluc(),kluc))
- {
- cout<<parovi[i];
- return;
- }
- }
- cout<<"Nema kluc"<<endl;
- }
- };
- void printTrueOrFalse (Kolekcija k1, Kolekcija k2)
- {
- if (k1==k2)
- cout << "TRUE" <<endl;
- else
- cout <<"FALSE" << endl;
- }
- int main()
- {
- int testCase;
- cin >> testCase;
- if (testCase == 1)
- {
- cout<<"Testiranje na konstruktori za Par i operator << "<<endl;
- Par p[20];
- int n;
- cin>>n;
- char kluc[50];
- double vrednost;
- for (int i=0; i<n; i++)
- {
- cin >> kluc >> vrednost;
- //cout << kluc << vrednost;
- Par p1 = Par(kluc,vrednost);
- //cout <<"GRESKA";
- p[i] = p1;
- cout << p[i];
- }
- }
- else if (testCase == 2)
- {
- cout << "Testiranje na operatorite ++ vo prefix i postfix notacija" <<endl;
- Par p1 = Par("FINKI",10.20);
- cout << p1;
- cout << p1++;
- cout << p1;
- Par p2 = Par("OOP",69.69);
- cout << p2;
- cout << ++p2;
- cout << p2;
- }
- else if (testCase == 3)
- {
- cout << "Testiranje na operatorot + vo klasata Par"<<endl;
- double vrednost;
- char kluc[50];
- Par p[2];
- for (int i=0; i<2; i++)
- {
- cin >> kluc >> vrednost;
- p[i]=Par(kluc,vrednost);
- }
- cout << p[0]+p[1];
- }
- else if (testCase==4)
- {
- cout << "Testiranje na operatorot + vo klasata Par"<<endl;
- double vrednost;
- char kluc [50];
- int n;
- cin >> n;
- Par p [50];
- for (int i=0; i<n; i++)
- {
- cin>>kluc>>vrednost;
- p[i]=Par(kluc,vrednost);
- }
- Par p1 = p[0];
- for (int i=1; i<n; i++)
- p1 = (p1 + p[i]);
- cout << p1;
- }
- else if (testCase == 5)
- {
- cout<<"Testiranje na operatorite << i += vo klasata Kolekcija"<<endl;
- Kolekcija k;
- int n;
- double vrednost;
- char kluc [50];
- cin >> n;
- for (int i=0; i<n; i++)
- {
- cin >> kluc >> vrednost;
- Par p = Par (kluc,vrednost);
- k+=p;
- //cout << p;
- }
- cout << k;
- }
- else if (testCase == 6)
- {
- cout << "Testiranje na operator == za klasata Kolekcija"<<endl;
- Par p1 ("A",1);
- Par p2 ("B",2);
- Par p3 ("B",3);
- Par p4 ("C",4);
- Kolekcija k1;
- k1 += p1;
- k1 += p2;
- k1 += p3;
- Kolekcija k2;
- k2+=p1;
- k2+=p4;
- Kolekcija k3;
- k3+=p1;
- k3+=p4;
- Kolekcija k4;
- k4+=p1;
- k4+=p3;
- printTrueOrFalse(k1,k2);
- printTrueOrFalse(k1,k3);
- printTrueOrFalse(k1,k4);
- printTrueOrFalse(k2,k3);
- printTrueOrFalse(k2,k4);
- printTrueOrFalse(k3,k4);
- }
- else
- {
- cout << "Testiranje na metodot najdi() vo klasata Kolekcija"<<endl;
- Kolekcija k;
- int n;
- double vrednost;
- char kluc [50];
- cin >> n;
- for (int i=0; i<n; i++)
- {
- cin >> kluc >> vrednost;
- Par p = Par (kluc,vrednost);
- k+=p;
- //cout << p;
- }
- char toFind[50];
- cin >> toFind;
- k.najdi(toFind);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement