Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Par{
- private:
- char *kluc;
- float vrednost;
- public:
- // default constructor
- Par () { kluc = new char [0]; vrednost = 0; }
- // constructor w/ arguments
- Par ( char *kl, float vr ){
- kluc = new char [strlen(kl) + 1];
- strcpy(kluc,kl);
- vrednost = vr;
- }
- // copy constructor
- Par ( const Par &p ){
- kluc = new char [strlen(p.kluc) + 1];
- strcpy(kluc,p.kluc);
- vrednost = p.vrednost;
- }
- // destructor
- ~Par () { delete [] kluc; }
- // operator =
- Par & operator=( const Par &p ){
- if(this!=&p){
- delete [] kluc;
- kluc = new char [strlen(p.kluc) + 1];
- strcpy(kluc,p.kluc);
- vrednost = p.vrednost;
- }
- return *this;
- }
- // operator ++ prefix
- Par & operator++ () {
- vrednost+=1;
- return *this;
- }
- // operator ++ sufix
- Par operator++ (int) {
- Par p(*this);
- vrednost+=1;
- return p;
- }
- // friend funkcii
- friend ostream & operator<<( ostream &napolje, const Par &p );
- friend Par operator+( const Par &p1, const Par & p2 );
- friend bool operator==( const Par &p1, const Par & p2 );
- friend class Kolekcija;
- };
- // operator <<
- ostream & operator<<( ostream &napolje, const Par &p ){
- napolje<<'('<<p.kluc<<", "<<p.vrednost<<')'<<endl;
- return napolje;
- }
- // operator +
- Par operator+( const Par &p1, const Par & p2 ) {
- Par tmp;
- if(strlen(p1.kluc) < strlen(p2.kluc)){
- tmp.kluc = new char [strlen(p2.kluc) +1];
- strcpy(tmp.kluc,p2.kluc);
- }
- else{
- tmp.kluc = new char [strlen(p1.kluc)+1];
- strcpy(tmp.kluc,p1.kluc);
- }
- tmp.vrednost = p1.vrednost + p2.vrednost;
- return tmp;
- }
- // operator ==
- bool operator==( const Par &p1, const Par & p2 ){
- return ( strcmp(p1.kluc,p2.kluc)==0 && p1.vrednost==p2.vrednost);
- }
- class Kolekcija{
- private:
- Par *niza;
- int dolzina;
- public:
- // default constructor
- Kolekcija () { niza = new Par [0]; dolzina = 0; }
- // copy constructor
- Kolekcija ( const Kolekcija &k ) {
- dolzina = k.dolzina;
- niza = new Par [ dolzina ];
- for(int i=0; i<dolzina; ++i)
- niza[i] = k.niza[i];
- }
- // destructor
- ~Kolekcija () { delete [] niza; }
- // operator =
- Kolekcija & operator=( const Kolekcija &k ){
- if(this!=&k){
- delete [] niza;
- dolzina = k.dolzina;
- niza = new Par [ dolzina ];
- for(int i=0; i<dolzina; ++i)
- niza[i] = k.niza[i];
- }
- return *this;
- }
- // operator +=
- Kolekcija & operator+=( const Par &p ){
- Par *tmp = new Par [ dolzina + 1];
- for(int i=0; i<dolzina; ++i)
- tmp[i]=niza[i];
- tmp[dolzina] = p;
- ++dolzina;
- delete [] niza;
- niza = tmp;
- return *this;
- }
- // friend funkcii
- friend ostream & operator<<( ostream & out, const Kolekcija &k );
- friend bool operator==( const Kolekcija &k1, const Kolekcija &k2 );
- // najdi ()
- void najdi ( const char * kluc ) {
- bool flag = true;
- for ( int i=0; i<dolzina; ++i ){
- if ( strcmp(niza[i].kluc, kluc) == 0 ){
- cout<<niza[i];
- flag = false;
- break;
- }
- }
- if (flag) cout<<"Ne postoi takov par";
- }
- };
- // operator << za kolekcija
- ostream & operator<<( ostream & out, const Kolekcija &k ) {
- out<<k.dolzina<<endl;
- for(int i=0;i<k.dolzina;++i)
- out<<k.niza[i];
- return out;
- }
- // operator == za kolekcija
- bool operator==( const Kolekcija &k1, const Kolekcija &k2 ){
- if(k1.dolzina==k2.dolzina){
- for(int i=0;i<k1.dolzina;++i){
- if(!(k1.niza[i]==k2.niza[i]))
- return false;
- }
- return true;
- }
- return false;
- }
- 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