Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Gitara {
- private:
- char seriski[25];
- double cena;
- int godina;
- char tip[40];
- void _copy(const Gitara &g) {
- strcpy(this->seriski, g.seriski);
- //strncpy(this->seriski, g.seriski, 24);
- //this->seriski[24] = '\0';
- this->cena = g.cena;
- this->godina = g.godina;
- strcpy(this->tip, g.tip);
- }
- public:
- Gitara (const char *tip = "", const char *seriski = "", const int godina = 0, double cena = 0) { //constructor so argumenti
- strcpy(this->tip, tip);
- strcpy(this->seriski, seriski);
- this->cena = cena;
- this->godina = godina;
- }
- Gitara (const Gitara &g) { //copy constructor
- _copy(g);
- }
- Gitara& operator= (const Gitara &g) { //operator =
- if (this != &g) {
- _copy(g);
- }
- return *this;
- }
- ~Gitara () {}
- bool daliIsti (const Gitara &g) {
- if ((strcmp(this->seriski, g.seriski)) == 0) {
- return true;
- }
- return false;
- }
- void pecati() {
- cout << this->seriski << " " << this->tip << " " << this->cena << endl;
- }
- char *getTip () {
- return tip;
- }
- char *getSeriski () {
- return seriski;
- }
- int getGodina () {
- return godina;
- }
- float getNabavna () {
- return cena;
- }
- };
- class Magacin {
- private:
- char ime[30];
- char lokacija[60];
- Gitara *gitari;
- int br_objekti;
- int godina;
- void _copy (const Magacin &m) {
- //strncpy(this->ime, m.ime, 29);
- //this->ime[29] = '\0';
- strcpy(this->ime, m.ime);
- strcpy(this->lokacija, m.lokacija);
- this->br_objekti = m.br_objekti;
- this->godina = m.godina;
- this->gitari = new Gitara[m.br_objekti];
- for (int i = 0; i < this->br_objekti; ++i) {
- this->gitari[i] = m.gitari[i];
- }
- }
- public:
- Magacin (const char *ime = "", const char *lokacija = "", const int godina = 0) { //constructor so argumenti
- strcpy(this->ime, ime);
- strcpy(this->lokacija, lokacija);
- this->godina = godina;
- gitari = NULL;
- br_objekti = 0;
- }
- Magacin (const Magacin &m) { //copy constructor
- _copy(m);
- }
- Magacin& operator= (const Magacin &m) { //operator =
- if (this != &m) {
- delete [] this->gitari;
- _copy(m);
- }
- return *this;
- }
- ~Magacin () {
- delete [] this->gitari;
- }
- double vrednost () {
- double zbir_vrednost = 0;
- for (int i = 0; i < this->br_objekti; ++i) {
- zbir_vrednost += gitari[i].getNabavna();
- }
- return zbir_vrednost;
- }
- void dodadi (Gitara &g) {
- Gitara *tmp = new Gitara[br_objekti+1];
- for (int i = 0; i < this->br_objekti; ++i) {
- tmp[i] = gitari[i];
- }
- tmp[br_objekti++] = g;
- delete [] this->gitari;
- this->gitari = tmp;
- }
- void prodadi (Gitara &g) {
- int newBr = 0;
- for (int i = 0; i < this->br_objekti; ++i) {
- if (gitari[i].daliIsti(g) == false) {
- newBr++;
- }
- }
- Gitara * tmp = new Gitara[newBr];
- int j = 0;
- for (int i=0; i < this->br_objekti; ++i) {
- if (gitari[i].daliIsti(g) == false) {
- tmp[j] = gitari[i];
- j++;
- }
- }
- delete [] this->gitari;
- this->gitari = tmp;
- this->br_objekti = newBr;
- }
- void pecati(bool daliNovi) {
- cout << ime << " " << lokacija << endl;
- for (int i = 0; i < this->br_objekti; i++) {
- if (daliNovi == true && gitari[i].getGodina() > godina) {
- gitari[i].pecati();
- } else if (daliNovi == false) {
- gitari[i].pecati();
- }
- }
- }
- };
- int main() {
- // se testira zadacata modularno
- int testCase;
- cin >> testCase;
- int n, godina;
- float cena;
- char seriski[50],tip[50];
- if(testCase == 1) {
- cout << "===== Testiranje na klasata Gitara ======" << endl;
- cin>>tip;
- cin>>seriski;
- cin >> godina;
- cin >> cena;
- Gitara g(tip,seriski, godina,cena);
- cout<<g.getTip()<<endl;
- cout<<g.getSeriski()<<endl;
- cout<<g.getGodina()<<endl;
- cout<<g.getNabavna()<<endl;
- } else if(testCase == 2) {
- cout << "===== Testiranje na klasata Magacin so metodot print() ======" << endl;
- Magacin kb("Magacin1","Lokacija1");
- kb.pecati(false);
- } else if(testCase == 3) {
- cout << "===== Testiranje na klasata Magacin so metodot dodadi() ======" << endl;
- Magacin kb("Magacin1","Lokacija1",2005);
- cin>>n;
- for (int i=0; i<n; i++) {
- cin>>tip;
- cin>>seriski;
- cin >> godina;
- cin >> cena;
- Gitara g(tip,seriski, godina,cena);
- cout<<"gitara dodadi"<<endl;
- kb.dodadi(g);
- }
- kb.pecati(true);
- }
- else if(testCase == 4) {
- cout << "===== Testiranje na klasata Magacin so metodot prodadi() ======" << endl;
- Magacin kb("Magacin1","Lokacija1",2012);
- cin>>n;
- Gitara brisi;
- for (int i=0; i<n; i++) {
- cin>>tip;
- cin>>seriski;
- cin >> godina;
- cin >> cena;
- Gitara g(tip,seriski, godina,cena);
- if(i==2)
- brisi=g;
- cout<<"gitara dodadi"<<endl;
- kb.dodadi(g);
- }
- kb.pecati(false);
- kb.prodadi(brisi);
- kb.pecati(false);
- } else if(testCase == 5) {
- cout << "===== Testiranje na klasata Magacin so metodot prodadi() i pecati(true) ======" << endl;
- Magacin kb("Magacin1","Lokacija1",2011);
- cin>>n;
- Gitara brisi;
- for (int i=0; i<n; i++) {
- cin>>tip;
- cin>>seriski;
- cin >> godina;
- cin >> cena;
- Gitara g(tip,seriski, godina,cena);
- if(i==2)
- brisi=g;
- cout<<"gitara dodadi"<<endl;
- kb.dodadi(g);
- }
- kb.pecati(true);
- kb.prodadi(brisi);
- cout<<"Po brisenje:"<<endl;
- Magacin kb3;
- kb3=kb;
- kb3.pecati(true);
- } else if(testCase ==6) {
- cout << "===== Testiranje na klasata Magacin so metodot vrednost()======" << endl;
- Magacin kb("Magacin1","Lokacija1",2011);
- cin>>n;
- Gitara brisi;
- for (int i=0; i<n; i++) {
- cin>>tip;
- cin>>seriski;
- cin >> godina;
- cin >> cena;
- Gitara g(tip,seriski, godina,cena);
- if(i==2)
- brisi=g;
- kb.dodadi(g);
- }
- cout<<kb.vrednost()<<endl;
- kb.prodadi(brisi);
- cout<<"Po brisenje:"<<endl;
- cout<<kb.vrednost();
- Magacin kb3;
- kb3=kb;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment