5
#include <iostream>
#include <cstring>
#include <iomanip>
using namespace std;
class Gitara {
char serial[25];
float price;
int year;
char type[40];
public:
Gitara() {
serial[0] = '\0';
price = 0;
year = 0;
type[0] = '\0';
}
Gitara(const char *_serial, float _price, int _year, const char *_type) {
strcpy(serial,_serial);
strcpy(type,_type);
price = _price;
year = _year;
}
Gitara(const Gitara &g) {
strcpy(serial,g.serial);
strcpy(type,g.type);
price = g.price;
year = g.year;
}
~Gitara(){}
Gitara &operator=(const Gitara &g) {
if (this!=&g) {
strcpy(serial,g.serial);
strcpy(type,g.type);
price = g.price;
year = g.year;
}
return *this;
}
char *getType(){return type;}
char *getSerial(){return serial;}
float getPrice(){return price;}
int getYear() {return year;}
bool daliSeIsti(const Gitara &g) {
return strcmp(serial,g.serial)==0;
}
void pecati() {
cout<<serial<<" "<<type<<" "<<price<<endl;
}
};
class Magacin {
char name[30];
char location[60];
Gitara *gitari;
int numberOfGuitars;
int yearOfOpening;
public:
Magacin() {
name[0]='\0';
location[0]='\0';
numberOfGuitars = 0;
yearOfOpening = 0;
gitari = nullptr;
}
Magacin(const char *_name, const char *_location, int _yearOfOpening=0) {
strcpy(name,_name);
strcpy(location,_location);;
yearOfOpening = _yearOfOpening;
gitari = nullptr;
numberOfGuitars = 0;
}
~Magacin() {
delete[] gitari;
}
Magacin &operator=(const Magacin &m) {
strcpy(name,m.name);
strcpy(location,m.location);
yearOfOpening = m.yearOfOpening;
numberOfGuitars = m.numberOfGuitars;
if (m.gitari!=nullptr and numberOfGuitars>0) {
delete[] gitari;
gitari = new Gitara[numberOfGuitars];
for (int i = 0; i<numberOfGuitars; i++)
gitari[i] = m.gitari[i];
}
return *this;
}
float vrednost() {
float sum = 0;
for (int i = 0; i<numberOfGuitars; i++) {
sum+=gitari[i].getPrice();
}
return sum;
}
void dodadi(const Gitara &d) {
Gitara *temp = new Gitara[numberOfGuitars+1];
if (gitari!=nullptr) {
for (int i = 0; i<numberOfGuitars; i++)
temp[i] = gitari[i];
}
temp[numberOfGuitars] = d;
if (gitari!=nullptr)
delete[] gitari;
gitari = temp;
numberOfGuitars++;
}
void _delete(int index) {
if (index<0 or index>=numberOfGuitars or gitari == nullptr)
return;
if (numberOfGuitars==1) {
delete[] gitari;
gitari=nullptr;
numberOfGuitars=0;
return;
}
Gitara *temp = new Gitara[numberOfGuitars-1];
for (int i = 0; i<index; i++)
temp[i] = gitari[i];
for (int i = index+1; i<numberOfGuitars; i++)
temp[i-1] = gitari[i];
delete[] gitari;
gitari = temp;
numberOfGuitars--;
}
void prodadi(const Gitara &p) {
for (int i = 0; i<numberOfGuitars; i++) {
if (gitari[i].daliSeIsti(p)) {
_delete(i);
i--;
}
}
}
void pecati(bool daliNovi) {
cout<<name<<" "<<location<<endl;
for (int i = 0; i<numberOfGuitars; i++) {
if (daliNovi) {
if (gitari[i].getYear()>yearOfOpening)
gitari[i].pecati();
}else
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(seriski, cena, godina,tip);
cout<<g.getType()<<endl;
cout<<g.getSerial()<<endl;
cout<<g.getYear()<<endl;
cout<<g.getPrice()<<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(seriski,cena, godina,tip);
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(seriski,cena, godina,tip);
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(seriski,cena, godina,tip);
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(seriski,cena, godina,tip);
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;
}Editor is loading...
Leave a Comment