Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- class NegativnaVrednost{
- private:
- char poraka[100];
- public:
- NegativnaVrednost(const char *poraka="")
- {
- strcpy(this->poraka,poraka);
- }
- void print()
- {
- cout<<poraka<<endl;
- }
- };
- class Oglas{
- private:
- char naslov[50];
- char kategorija[30];
- char opis[100];
- float cena;
- public:
- Oglas(const char *naslov="",const char *kategorija="",const char *opis="",float cena=0.0)
- {
- strcpy(this->naslov,naslov);
- strcpy(this->kategorija,kategorija);
- strcpy(this->opis,opis);
- this->cena=cena;
- }
- Oglas(const Oglas &o)
- {
- strcpy(this->naslov,o.naslov);
- strcpy(this->kategorija,o.kategorija);
- strcpy(this->opis,o.opis);
- this->cena=o.cena;
- }
- bool operator >(Oglas &o)
- {
- if(this->cena>o.cena)
- return true;
- else return false;
- }
- float getCena()
- {
- return cena;
- }
- friend ostream &operator <<(ostream &out,Oglas &o)
- {
- return out<<o.naslov<<"\n"<<o.opis<<"\n"<<o.cena<<" evra"<<endl;
- }
- char *getKategorija()
- {
- return kategorija;
- }
- };
- class Oglasnik{
- private:
- char naziv[20];
- Oglas *niza;
- int broj;
- public:
- Oglasnik()
- {
- strcpy(this->naziv,"");
- }
- Oglasnik(char *naziv)
- {
- strcpy(this->naziv,naziv);
- this->niza = new Oglas[0];
- this->broj=0;
- }
- Oglasnik(const Oglasnik &o)
- {
- strcpy(this->naziv,o.naziv);
- this->niza = new Oglas[o.broj];
- this->broj=o.broj;
- for(int i=0;i<o.broj;i++)
- {
- this->niza[i]=o.niza[i];
- }
- }
- Oglasnik &operator+=(Oglas &og)
- {
- if(og.getCena()<0)
- {
- throw NegativnaVrednost("Oglasot ima nevalidna vrednost za cenata i nema da bide evidentiran!");
- }
- else
- {
- Oglas *tmp = new Oglas[broj+1];
- for(int i=0;i<broj;i++)
- {
- tmp[i]=niza[i];
- }
- tmp[broj++]=og;
- delete [] niza;
- niza=tmp;
- return *this;
- }
- }
- friend ostream &operator << (ostream &out,Oglasnik &o)
- {
- out<<o.naziv<<endl;
- for(int i=0;i<o.broj;i++)
- {
- out<<o.niza[i]<<endl;
- }
- return out;
- }
- void oglasiOdKategorija(const char*argument)
- {
- for(int i=0;i<broj;i++)
- {
- if(strcmp(niza[i].getKategorija(),argument)==0)
- {
- cout<<niza[i]<<endl;
- }
- }
- }
- void najniskaCena()
- {
- int min=niza[0].getCena(),iMin=0;
- for(int i=0;i<broj;i++)
- {
- if(min>niza[i].getCena())
- {
- min=niza[i].getCena();
- iMin=i;
- }
- }
- cout<<niza[iMin];
- }
- };
- int main(){
- char naslov[50];
- char kategorija[30];
- char opis[100];
- float cena;
- char naziv[50];
- char k[30];
- int n;
- int tip;
- cin>>tip;
- try{
- Oglasnik og1(naziv);
- Oglas o(naslov,kategorija,opis,cena);
- og1+=o;
- }
- catch(NegativnaVrednost ex)
- {
- ex.print();
- }
- if (tip==1){
- cout<<"-----Test Oglas & operator <<-----" <<endl;
- cin.get();
- cin.getline(naslov,49);
- cin.getline(kategorija,29);
- cin.getline(opis,99);
- cin>>cena;
- Oglas o(naslov, kategorija, opis, cena);
- cout<<o;
- }
- else if (tip==2){
- cout<<"-----Test Oglas & operator > -----" <<endl;
- cin.get();
- cin.getline(naslov,49);
- cin.getline(kategorija,29);
- cin.getline(opis,99);
- cin>>cena;
- Oglas o1(naslov, kategorija, opis, cena);
- cin.get();
- cin.getline(naslov,49);
- cin.getline(kategorija,29);
- cin.getline(opis,99);
- cin>>cena;
- Oglas o2(naslov, kategorija, opis, cena);
- if (o1>o2) cout<<"Prviot oglas e poskap."<<endl;
- else cout<<"Prviot oglas ne e poskap."<<endl;
- }
- else if (tip==3){
- cout<<"-----Test Oglasnik, operator +=, operator << -----" <<endl ;
- cin.get();
- cin.getline(naziv,49);
- cin>>n;
- Oglasnik ogl(naziv);
- for (int i = 0; i < n; i++){
- cin.get();
- cin.getline(naslov,49);
- cin.getline(kategorija,29);
- cin.getline(opis,99);
- cin>>cena;
- Oglas o(naslov, kategorija, opis, cena);
- try{
- ogl+=o;
- }
- catch(NegativnaVrednost &exc)
- {
- exc.print();
- }
- }
- cout<<ogl;
- }
- else if (tip==4){
- cout<<"-----Test oglasOdKategorija -----" <<endl ;
- cin.get();
- cin.getline(naziv,49);
- cin>>n;
- Oglasnik ogl(naziv);
- for (int i = 0; i < n; i++){
- cin.get();
- cin.getline(naslov,49);
- cin.getline(kategorija,29);
- cin.getline(opis,99);
- cin>>cena;
- Oglas o(naslov, kategorija, opis, cena);
- try{
- ogl+=o;
- }
- catch(NegativnaVrednost &exc)
- {
- exc.print();
- }
- }
- cin.get();
- cin.getline(k,29);
- cout<<"Oglasi od kategorijata: " <<k<<endl;
- ogl.oglasiOdKategorija(k);
- }
- else if (tip==5){
- cout<<"-----Test Exception -----" <<endl ;
- cin.get();
- cin.getline(naziv,49);
- cin>>n;
- Oglasnik ogl(naziv);
- for (int i = 0; i < n; i++){
- cin.get();
- cin.getline(naslov,49);
- cin.getline(kategorija,29);
- cin.getline(opis,99);
- cin>>cena;
- Oglas o(naslov, kategorija, opis, cena);
- try{
- ogl+=o;
- }
- catch(NegativnaVrednost &exc)
- {
- exc.print();
- }
- }
- cout<<ogl;
- }
- else if (tip==6){
- cout<<"-----Test najniskaCena -----" <<endl ;
- cin.get();
- cin.getline(naziv,49);
- cin>>n;
- Oglasnik ogl(naziv);
- for (int i = 0; i < n; i++){
- cin.get();
- cin.getline(naslov,49);
- cin.getline(kategorija,29);
- cin.getline(opis,99);
- cin>>cena;
- Oglas o(naslov, kategorija, opis, cena);
- try{
- ogl+=o;
- }
- catch(NegativnaVrednost &exc)
- {
- exc.print();
- }
- }
- cout<<"Oglas so najniska cena:"<<endl;
- ogl.najniskaCena();
- }
- else if (tip==7){
- cout<<"-----Test All -----" <<endl ;
- cin.get();
- cin.getline(naziv,49);
- cin>>n;
- Oglasnik ogl(naziv);
- for (int i = 0; i < n; i++){
- cin.get();
- cin.getline(naslov,49);
- cin.getline(kategorija,29);
- cin.getline(opis,99);
- cin>>cena;
- Oglas o(naslov, kategorija, opis, cena);
- try{
- ogl+=o;
- }
- catch(NegativnaVrednost &exc)
- {
- exc.print();
- }
- }
- cout<<ogl;
- cin.get();
- cin.get();
- cin.getline(k,29);
- cout<<"Oglasi od kategorijata: " <<k<<endl;
- ogl.oglasiOdKategorija(k);
- cout<<"Oglas so najniska cena:"<<endl;
- ogl.najniskaCena();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement