SHARE
TWEET

kolekcija parovi

a guest Jan 20th, 2019 59 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. class Par
  6. {
  7.     char *kluc;
  8.     float vrednost;
  9. public:
  10.     Par()
  11.     {
  12.         kluc=new char[0];
  13.     }
  14.     Par(char *kluc,float vrednost)
  15.     {
  16.         this->kluc=new char[strlen(kluc)+1];
  17.         strcpy(this->kluc,kluc);
  18.         this->vrednost=vrednost;
  19.     }
  20.     Par(const Par &p)
  21.     {
  22.         kluc=new char[strlen(p.kluc)+1];
  23.         strcpy(this->kluc,p.kluc);
  24.         vrednost=p.vrednost;
  25.     }
  26.     Par &operator=(const Par &p)
  27.     {
  28.         if(this!=&p)
  29.         {
  30.             delete[]kluc;
  31.             kluc=new char[strlen(p.kluc)+1];
  32.             strcpy(this->kluc,p.kluc);
  33.             vrednost=p.vrednost;
  34.         }
  35.         return *this;
  36.     }
  37.     ~Par()
  38.     {
  39.         delete[]kluc;
  40.     }
  41.     char *getKluc()
  42.     {
  43.         return kluc;
  44.     }
  45.     friend ostream &operator<<(ostream &out,const Par &p)
  46.     {
  47.         out<<"("<<p.kluc<<", "<<p.vrednost<<")"<<endl;
  48.         return out;
  49.     }
  50.     Par &operator++()
  51.     {
  52.         vrednost++;
  53.         return *this;
  54.     }
  55.     Par operator++(int)
  56.     {
  57.         Par p(*this);
  58.         vrednost++;
  59.         return p;
  60.     }
  61.     Par operator+(const Par &p)
  62.     {
  63.         if(strlen(kluc)>=strlen(p.kluc))
  64.         {
  65.             Par i(*this);
  66.             i.vrednost=vrednost+p.vrednost;
  67.             return i;
  68.         }
  69.         Par i(p);
  70.         i.vrednost=vrednost+p.vrednost;
  71.         return i;
  72.     }
  73.     bool operator==(const Par &p)
  74.     {
  75.         bool temp=true;
  76.         if(strcmp(kluc,p.kluc))
  77.             temp=false;
  78.         if(vrednost!=p.vrednost)
  79.             temp=false;
  80.         return temp;
  81.     }
  82. };
  83. class Kolekcija
  84. {
  85.     Par *parovi;
  86.     int broj;
  87. public:
  88.     Kolekcija()
  89.     {
  90.         broj=0;
  91.         parovi=new Par[0];
  92.     }
  93.     Kolekcija(const Kolekcija &p)
  94.     {
  95.         broj=p.broj;
  96.         for(int i=0; i<broj; i++)
  97.         {
  98.             parovi[i]=p.parovi[i];
  99.         }
  100.     }
  101.     Kolekcija &operator=(const Kolekcija &p)
  102.     {
  103.         if(this!=&p)
  104.         {
  105.             delete[]parovi;
  106.             broj=p.broj;
  107.             for(int i=0; i<broj; i++)
  108.             {
  109.                 parovi[i]=p.parovi[i];
  110.             }
  111.         }
  112.         return *this;
  113.     }
  114.     ~Kolekcija()
  115.     {
  116.         delete[]parovi;
  117.     }
  118.     Kolekcija &operator+=(Par &p)
  119.     {
  120.         Par *pom=new Par[broj+1];
  121.         for(int i=0;i<broj;i++)
  122.         {
  123.             pom[i]=parovi[i];
  124.         }
  125.         pom[broj++]=p;
  126.         delete[]parovi;
  127.         parovi=pom;
  128.         return *this;
  129.     }
  130.     friend ostream &operator<<(ostream &out,const Kolekcija &k)
  131.     {
  132.         out<<k.broj<<endl;
  133.         for(int i=0;i<k.broj;i++)
  134.         {
  135.             out<<k.parovi[i];
  136.         }
  137.     }
  138.     bool operator==(const Kolekcija &k)
  139.     {
  140.         int brojac=0;
  141.         if(broj!=k.broj) return false;
  142.             for(int i=0;i<broj;i++)
  143.             {
  144.                 if(parovi[i]==k.parovi[i]) brojac++;
  145.             }
  146.         if(brojac==broj) return true;
  147.         return false;
  148.     }
  149.     void najdi(const char *kluc)
  150.     {
  151.         for(int i=0;i<broj;i++)
  152.         {
  153.             if(!strcmp(parovi[i].getKluc(),kluc))
  154.             {
  155.                 cout<<parovi[i];
  156.                 return;
  157.             }
  158.         }
  159.         cout<<"Nema kluc"<<endl;
  160.     }
  161. };
  162. void printTrueOrFalse (Kolekcija k1, Kolekcija k2)
  163. {
  164.     if (k1==k2)
  165.         cout << "TRUE" <<endl;
  166.     else
  167.         cout <<"FALSE" << endl;
  168. }
  169.  
  170. int main()
  171. {
  172.  
  173.     int testCase;
  174.     cin >> testCase;
  175.  
  176.     if (testCase == 1)
  177.     {
  178.         cout<<"Testiranje na konstruktori za Par i operator << "<<endl;
  179.         Par p[20];
  180.         int n;
  181.         cin>>n;
  182.         char kluc[50];
  183.         double vrednost;
  184.         for (int i=0; i<n; i++)
  185.         {
  186.             cin >> kluc >> vrednost;
  187.             //cout << kluc << vrednost;
  188.             Par p1 = Par(kluc,vrednost);
  189.             //cout <<"GRESKA";
  190.             p[i] = p1;
  191.             cout << p[i];
  192.         }
  193.     }
  194.     else if (testCase == 2)
  195.     {
  196.         cout << "Testiranje na operatorite ++ vo prefix i postfix notacija" <<endl;
  197.         Par p1 = Par("FINKI",10.20);
  198.  
  199.         cout << p1;
  200.         cout << p1++;
  201.         cout << p1;
  202.  
  203.         Par p2 = Par("OOP",69.69);
  204.  
  205.         cout << p2;
  206.         cout << ++p2;
  207.         cout << p2;
  208.     }
  209.     else if (testCase == 3)
  210.     {
  211.         cout << "Testiranje na operatorot + vo klasata Par"<<endl;
  212.         double vrednost;
  213.         char kluc[50];
  214.         Par p[2];
  215.         for (int i=0; i<2; i++)
  216.         {
  217.             cin >> kluc >> vrednost;
  218.             p[i]=Par(kluc,vrednost);
  219.         }
  220.  
  221.         cout << p[0]+p[1];
  222.     }
  223.     else if (testCase==4)
  224.     {
  225.         cout << "Testiranje na operatorot + vo klasata Par"<<endl;
  226.         double vrednost;
  227.         char kluc [50];
  228.         int n;
  229.         cin >> n;
  230.         Par p [50];
  231.         for (int i=0; i<n; i++)
  232.         {
  233.             cin>>kluc>>vrednost;
  234.             p[i]=Par(kluc,vrednost);
  235.         }
  236.  
  237.         Par p1 = p[0];
  238.         for (int i=1; i<n; i++)
  239.             p1 = (p1 + p[i]);
  240.  
  241.         cout << p1;
  242.     }
  243.     else if (testCase == 5)
  244.     {
  245.         cout<<"Testiranje na operatorite << i += vo klasata Kolekcija"<<endl;
  246.         Kolekcija k;
  247.         int n;
  248.         double vrednost;
  249.         char kluc [50];
  250.         cin >> n;
  251.         for (int i=0; i<n; i++)
  252.         {
  253.             cin >> kluc >> vrednost;
  254.             Par p = Par (kluc,vrednost);
  255.             k+=p;
  256.             //cout << p;
  257.         }
  258.  
  259.         cout << k;
  260.     }
  261.     else if (testCase == 6)
  262.     {
  263.         cout << "Testiranje na operator == za klasata Kolekcija"<<endl;
  264.  
  265.         Par p1 ("A",1);
  266.         Par p2 ("B",2);
  267.         Par p3 ("B",3);
  268.         Par p4 ("C",4);
  269.  
  270.         Kolekcija k1;
  271.         k1 += p1;
  272.         k1 += p2;
  273.         k1 += p3;
  274.  
  275.         Kolekcija k2;
  276.         k2+=p1;
  277.         k2+=p4;
  278.  
  279.         Kolekcija k3;
  280.         k3+=p1;
  281.         k3+=p4;
  282.  
  283.         Kolekcija k4;
  284.         k4+=p1;
  285.         k4+=p3;
  286.  
  287.         printTrueOrFalse(k1,k2);
  288.         printTrueOrFalse(k1,k3);
  289.         printTrueOrFalse(k1,k4);
  290.         printTrueOrFalse(k2,k3);
  291.         printTrueOrFalse(k2,k4);
  292.         printTrueOrFalse(k3,k4);
  293.  
  294.  
  295.     }
  296.     else
  297.     {
  298.         cout << "Testiranje na metodot najdi() vo klasata Kolekcija"<<endl;
  299.         Kolekcija k;
  300.         int n;
  301.         double vrednost;
  302.         char kluc [50];
  303.         cin >> n;
  304.         for (int i=0; i<n; i++)
  305.         {
  306.             cin >> kluc >> vrednost;
  307.             Par p = Par (kluc,vrednost);
  308.             k+=p;
  309.             //cout << p;
  310.         }
  311.  
  312.         char toFind[50];
  313.         cin >> toFind;
  314.         k.najdi(toFind);
  315.     }
  316.     return 0;
  317.  
  318. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top