Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string.h>
- #include<cstdlib>
- #include<climits>
- using namespace std;
- class NegativnaVrednost{
- private:
- char error[100];
- public:
- NegativnaVrednost(){}
- NegativnaVrednost(char error[]){
- strcpy(this->error,error);
- }
- void print(){
- cout<<error<<endl;
- }
- };
- class Oglas{
- private:
- char naslov[50];
- char kategorija[30];
- char opis[100];
- float cena;
- public:
- Oglas(){}
- Oglas(char naslov[],char *kategorija,char opis[],float cena){
- strcpy(this->naslov,naslov);
- strcpy(this->kategorija,kategorija);
- strcpy(this->opis,opis);
- this->cena=cena;
- }
- bool operator>(Oglas &objekt){
- if(this->cena>objekt.cena){
- return true;
- }else{
- return false;
- }
- }
- char* getNaslov(){
- return naslov;
- }
- char* getOpis(){
- return opis;
- }
- char* getKategorija(){
- return kategorija;
- }
- float getCena(){
- return cena;
- }
- friend ostream &operator<<(ostream &output,Oglas &objekt){
- output<<objekt.naslov<<endl<<objekt.opis<<endl<<objekt.cena<<" evra"<<endl;
- return output;
- }
- ~Oglas(){}
- };
- class Oglasnik{
- private:
- char ime[20];
- Oglas *oglasi;
- int brojOglasi;
- public:
- Oglasnik(){
- oglasi=new Oglas[0];
- brojOglasi=0;
- }
- Oglasnik(char ime[]){
- strcpy(this->ime,ime);
- oglasi=new Oglas[0];
- brojOglasi=0;
- }
- //oglasnik+=oglas;
- Oglasnik &operator+=(Oglas &novOglas){
- if(novOglas.getCena()<0){
- throw NegativnaVrednost("Oglasot ima nevalidna vrednost za cenata i nema da bide evidentiran!");
- }
- Oglas *tempNiza=new Oglas[brojOglasi];
- for(int i=0;i<brojOglasi;i++){
- tempNiza[i]=oglasi[i];
- }
- oglasi=new Oglas[brojOglasi+1];
- for(int i=0;i<brojOglasi;i++){
- oglasi[i]=tempNiza[i];
- }
- oglasi[brojOglasi]=novOglas;
- brojOglasi++;
- delete []tempNiza;
- return *this;
- }
- friend ostream &operator<<(ostream &output, Oglasnik &objekt){
- output<<objekt.ime<<endl;
- for(int i=0;i<objekt.brojOglasi;i++){
- output<<objekt.oglasi[i].getNaslov()<<endl;
- output<<objekt.oglasi[i].getOpis()<<endl;
- output<<objekt.oglasi[i].getCena()<<" evra"<<endl;
- output<<endl;
- }
- return output;
- }
- void oglasiOdKategorija(const char *k){
- for(int i=0;i<brojOglasi;i++){
- if(strcmp(oglasi[i].getKategorija(),k)==0){
- cout<<oglasi[i];
- }
- }
- }
- void najniskaCena(){
- float minCena=9999999;
- int pamtiIndex;
- for(int i=0;i<brojOglasi;i++){
- if(oglasi[i].getCena()<minCena){
- minCena=oglasi[i].getCena();
- pamtiIndex=i;
- }
- }
- cout<<oglasi[pamtiIndex];
- }
- ~Oglasnik(){
- delete []oglasi;
- }
- };
- 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;
- 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);
- ogl+=o;
- }
- 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);
- ogl+=o;
- }
- 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);
- ogl+=o;
- }
- 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);
- ogl+=o;
- }
- 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);
- ogl+=o;
- }
- 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