Advertisement
LegoDrifter

Oglasnik OOP

Jun 28th, 2020
417
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.59 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5. class NegativnaVrednost{
  6. private:
  7.     char poraka[100];
  8. public:
  9.     NegativnaVrednost(const char *poraka="")
  10.     {
  11.         strcpy(this->poraka,poraka);
  12.     }
  13.     void print()
  14.     {
  15.         cout<<poraka<<endl;
  16.     }
  17.  
  18.  
  19.  
  20.  
  21.  
  22. };
  23.  
  24. class Oglas{
  25. private:
  26.     char naslov[50];
  27.     char kategorija[30];
  28.     char opis[100];
  29.     float cena;
  30. public:
  31.     Oglas(const char *naslov="",const char *kategorija="",const char *opis="",float cena=0.0)
  32.     {
  33.         strcpy(this->naslov,naslov);
  34.         strcpy(this->kategorija,kategorija);
  35.         strcpy(this->opis,opis);
  36.         this->cena=cena;
  37.     }
  38.     Oglas(const Oglas &o)
  39.     {
  40.         strcpy(this->naslov,o.naslov);
  41.         strcpy(this->kategorija,o.kategorija);
  42.         strcpy(this->opis,o.opis);
  43.         this->cena=o.cena;
  44.     }
  45.     bool operator >(Oglas &o)
  46.     {
  47.         if(this->cena>o.cena)
  48.             return true;
  49.         else return false;
  50.     }
  51.     float getCena()
  52.     {
  53.         return cena;
  54.     }
  55.     friend ostream &operator <<(ostream &out,Oglas &o)
  56.     {
  57.         return out<<o.naslov<<"\n"<<o.opis<<"\n"<<o.cena<<" evra"<<endl;
  58.     }
  59.     char *getKategorija()
  60.     {
  61.         return kategorija;
  62.     }
  63.  
  64.  
  65. };
  66. class Oglasnik{
  67. private:
  68.     char naziv[20];
  69.     Oglas *niza;
  70.     int broj;
  71. public:
  72.     Oglasnik()
  73.     {
  74.         strcpy(this->naziv,"");
  75.     }
  76.     Oglasnik(char *naziv)
  77.     {
  78.         strcpy(this->naziv,naziv);
  79.         this->niza = new Oglas[0];
  80.         this->broj=0;
  81.     }
  82.     Oglasnik(const Oglasnik &o)
  83.     {
  84.         strcpy(this->naziv,o.naziv);
  85.         this->niza = new Oglas[o.broj];
  86.         this->broj=o.broj;
  87.         for(int i=0;i<o.broj;i++)
  88.         {
  89.             this->niza[i]=o.niza[i];
  90.         }
  91.     }
  92.     Oglasnik &operator+=(Oglas &og)
  93.     {
  94.         if(og.getCena()<0)
  95.         {
  96.             throw NegativnaVrednost("Oglasot ima nevalidna vrednost za cenata i nema da bide evidentiran!");
  97.         }
  98.         else
  99.         {
  100.         Oglas *tmp = new Oglas[broj+1];
  101.         for(int i=0;i<broj;i++)
  102.         {
  103.             tmp[i]=niza[i];
  104.         }
  105.         tmp[broj++]=og;
  106.         delete [] niza;
  107.         niza=tmp;
  108.         return *this;
  109.         }
  110.     }
  111.     friend ostream &operator << (ostream &out,Oglasnik &o)
  112.     {
  113.         out<<o.naziv<<endl;
  114.         for(int i=0;i<o.broj;i++)
  115.         {
  116.             out<<o.niza[i]<<endl;
  117.         }
  118.         return out;
  119.     }
  120.     void oglasiOdKategorija(const char*argument)
  121.     {
  122.         for(int i=0;i<broj;i++)
  123.         {
  124.             if(strcmp(niza[i].getKategorija(),argument)==0)
  125.             {
  126.                 cout<<niza[i]<<endl;
  127.             }
  128.         }
  129.     }
  130.     void najniskaCena()
  131.     {
  132.         int min=niza[0].getCena(),iMin=0;
  133.         for(int i=0;i<broj;i++)
  134.         {
  135.             if(min>niza[i].getCena())
  136.             {
  137.                 min=niza[i].getCena();
  138.                 iMin=i;
  139.             }
  140.         }
  141.         cout<<niza[iMin];
  142.     }
  143.  
  144.  
  145. };
  146.  
  147.  
  148. int main(){
  149.  
  150.     char naslov[50];
  151.     char kategorija[30];
  152.     char opis[100];
  153.     float cena;
  154.     char naziv[50];
  155.     char k[30];
  156.     int n;
  157.  
  158.     int tip;
  159.     cin>>tip;
  160.     try{
  161.  
  162.         Oglasnik og1(naziv);
  163.         Oglas o(naslov,kategorija,opis,cena);
  164.         og1+=o;
  165.     }
  166.     catch(NegativnaVrednost ex)
  167.     {
  168.         ex.print();
  169.     }
  170.  
  171.     if (tip==1){
  172.         cout<<"-----Test Oglas & operator <<-----" <<endl;
  173.         cin.get();
  174.         cin.getline(naslov,49);
  175.         cin.getline(kategorija,29);
  176.         cin.getline(opis,99);
  177.         cin>>cena;
  178.         Oglas o(naslov, kategorija, opis, cena);
  179.         cout<<o;
  180.     }
  181.     else if (tip==2){
  182.         cout<<"-----Test Oglas & operator > -----" <<endl;
  183.         cin.get();
  184.         cin.getline(naslov,49);
  185.         cin.getline(kategorija,29);
  186.         cin.getline(opis,99);
  187.         cin>>cena;
  188.         Oglas o1(naslov, kategorija, opis, cena);
  189.         cin.get();
  190.         cin.getline(naslov,49);
  191.         cin.getline(kategorija,29);
  192.         cin.getline(opis,99);
  193.         cin>>cena;
  194.         Oglas o2(naslov, kategorija, opis, cena);
  195.         if (o1>o2) cout<<"Prviot oglas e poskap."<<endl;
  196.         else cout<<"Prviot oglas ne e poskap."<<endl;
  197.     }
  198.     else if (tip==3){
  199.         cout<<"-----Test Oglasnik, operator +=, operator << -----" <<endl ;
  200.         cin.get();
  201.         cin.getline(naziv,49);
  202.         cin>>n;
  203.         Oglasnik ogl(naziv);
  204.         for (int i = 0; i < n; i++){
  205.             cin.get();
  206.             cin.getline(naslov,49);
  207.             cin.getline(kategorija,29);
  208.             cin.getline(opis,99);
  209.             cin>>cena;
  210.             Oglas o(naslov, kategorija, opis, cena);
  211.             try{
  212.             ogl+=o;
  213.             }
  214.             catch(NegativnaVrednost &exc)
  215.             {
  216.                 exc.print();
  217.             }
  218.  
  219.  
  220.         }
  221.         cout<<ogl;
  222.     }
  223.     else if (tip==4){
  224.         cout<<"-----Test oglasOdKategorija -----" <<endl ;
  225.         cin.get();
  226.         cin.getline(naziv,49);
  227.         cin>>n;
  228.         Oglasnik ogl(naziv);
  229.         for (int i = 0; i < n; i++){
  230.             cin.get();
  231.             cin.getline(naslov,49);
  232.             cin.getline(kategorija,29);
  233.             cin.getline(opis,99);
  234.             cin>>cena;
  235.             Oglas o(naslov, kategorija, opis, cena);
  236.             try{
  237.             ogl+=o;
  238.             }
  239.             catch(NegativnaVrednost &exc)
  240.             {
  241.                 exc.print();
  242.             }
  243.         }
  244.         cin.get();
  245.         cin.getline(k,29);
  246.         cout<<"Oglasi od kategorijata: " <<k<<endl;
  247.         ogl.oglasiOdKategorija(k);
  248.  
  249.     }
  250.     else if (tip==5){
  251.         cout<<"-----Test Exception -----" <<endl ;
  252.         cin.get();
  253.         cin.getline(naziv,49);
  254.         cin>>n;
  255.         Oglasnik ogl(naziv);
  256.         for (int i = 0; i < n; i++){
  257.             cin.get();
  258.             cin.getline(naslov,49);
  259.             cin.getline(kategorija,29);
  260.             cin.getline(opis,99);
  261.             cin>>cena;
  262.             Oglas o(naslov, kategorija, opis, cena);
  263.             try{
  264.             ogl+=o;
  265.             }
  266.             catch(NegativnaVrednost &exc)
  267.             {
  268.                 exc.print();
  269.             }
  270.         }
  271.         cout<<ogl;
  272.  
  273.     }
  274.     else if (tip==6){
  275.         cout<<"-----Test najniskaCena -----" <<endl ;
  276.         cin.get();
  277.         cin.getline(naziv,49);
  278.         cin>>n;
  279.         Oglasnik ogl(naziv);
  280.         for (int i = 0; i < n; i++){
  281.             cin.get();
  282.             cin.getline(naslov,49);
  283.             cin.getline(kategorija,29);
  284.             cin.getline(opis,99);
  285.             cin>>cena;
  286.             Oglas o(naslov, kategorija, opis, cena);
  287.             try{
  288.             ogl+=o;
  289.             }
  290.             catch(NegativnaVrednost &exc)
  291.             {
  292.                 exc.print();
  293.             }
  294.         }
  295.         cout<<"Oglas so najniska cena:"<<endl;
  296.         ogl.najniskaCena();
  297.  
  298.     }
  299.     else if (tip==7){
  300.         cout<<"-----Test All -----" <<endl ;
  301.         cin.get();
  302.         cin.getline(naziv,49);
  303.         cin>>n;
  304.         Oglasnik ogl(naziv);
  305.         for (int i = 0; i < n; i++){
  306.             cin.get();
  307.             cin.getline(naslov,49);
  308.             cin.getline(kategorija,29);
  309.             cin.getline(opis,99);
  310.             cin>>cena;
  311.             Oglas o(naslov, kategorija, opis, cena);
  312.             try{
  313.             ogl+=o;
  314.             }
  315.             catch(NegativnaVrednost &exc)
  316.             {
  317.                 exc.print();
  318.             }
  319.         }
  320.         cout<<ogl;
  321.  
  322.         cin.get();
  323.         cin.get();
  324.         cin.getline(k,29);
  325.         cout<<"Oglasi od kategorijata: " <<k<<endl;
  326.         ogl.oglasiOdKategorija(k);
  327.  
  328.         cout<<"Oglas so najniska cena:"<<endl;
  329.         ogl.najniskaCena();
  330.  
  331.     }
  332.  
  333.     return 0;
  334. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement