Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstring>
- using namespace std;
- class Pica { //Да се дефинира класа Пица за која ќе се чуваат податоци за:
- private:
- char imenapica [15]; //име на пицата (низа од 15 знаци)
- int cenanapica; //цена (цел број)
- char * sostojki; //состојки (динамички алоцирана низа од знаци)
- int namaluvanje; //намалување на цената во проценти (цел број)
- public://За потребите на оваа класа да се креираат потребните конструктори и да се напише соодветен
- Pica(const char * imenapica = "", int cenanapica = 0, const char * sostojki = "", int namaluvanje=0) { //konstruktor so argumenti
- strcpy(this->imenapica, imenapica);
- this->cenanapica=cenanapica;
- this->sostojki=new char[strlen(sostojki)+1];
- strcpy(this->sostojki, sostojki);
- this->namaluvanje = namaluvanje;
- }
- Pica(const Pica &p) { // copy konstruktor
- strcpy(this->imenapica, p.imenapica);
- this->cenanapica=p.cenanapica;
- this->sostojki=new char[strlen(p.sostojki)+1];
- strcpy(this->sostojki, p.sostojki);
- this->namaluvanje = p.namaluvanje;
- }
- Pica &operator=(Pica &p) { //operator = overload
- if(this!=&p) {
- strcpy(this->imenapica, p.imenapica);
- this->cenanapica=p.cenanapica;
- delete [] sostojki;
- this->sostojki=new char[strlen(p.sostojki)+1];
- strcpy(this->sostojki, p.sostojki);
- this->namaluvanje = p.namaluvanje;
- }
- return *this;
- }
- ~Pica(){ //деструктор. Дополнително за оваа класа да се дефинира функцијата:
- delete [] sostojki;
- }
- void pecati () { //pecati() - функција во која ќе се печатат податоците за пицата во следниот формат:
- cout<<imenapica<<" - "<<sostojki<<", "<<cenanapica; //име - состојки, цена.
- }
- bool istiSe(Pica p) { //istiSe(Pica p) - функција за споредба на две пици според состојките :
- return (strcmp(p.sostojki, this->sostojki)==0);
- }
- int getnamaluvanje(){
- return namaluvanje;
- }
- int getcena(){
- return cenanapica;
- }
- };class Picerija {
- private:
- char imenapica[15];
- Pica* nizaodpici;
- int brojnapici;
- public:
- Picerija(const char *imenapica = ""){
- strncpy(this->imenapica, imenapica, 14);
- this->imenapica[14] = 0;
- nizaodpici = NULL;
- brojnapici = 0;
- }
- Picerija(const char *imenapica, Pica* nizaodpici, int brojnapici) {
- strncpy(this->imenapica, imenapica, 14);
- this->imenapica[14] = 0;
- this->brojnapici = brojnapici;
- this->nizaodpici = new Pica[brojnapici];
- for (int i = 0; i < brojnapici; i++)
- this->nizaodpici[i] = nizaodpici[i];
- }
- Picerija(const Picerija &p) {
- strcpy(imenapica, p.imenapica);
- brojnapici = p.brojnapici;
- nizaodpici = new Pica[brojnapici];
- for (int i = 0; i < brojnapici; i++)
- nizaodpici[i] = p.nizaodpici[i];
- }
- Picerija& operator= (const Picerija &p) {
- if (this != &p) {
- strcpy(imenapica, p.imenapica);
- brojnapici = p.brojnapici;
- delete[] nizaodpici;
- nizaodpici = new Pica[brojnapici];
- for (int i = 0; i < brojnapici; i++)
- nizaodpici[i] = p.nizaodpici[i];
- }
- return *this;
- }
- ~Picerija() {
- delete[] nizaodpici;
- }
- Picerija& operator+=(Pica &p){
- bool imaIsta = false;
- for (int i = 0; i < brojnapici; i++)
- if (nizaodpici[i].istiSe(p))
- imaIsta = true;
- if (!imaIsta)
- {
- Pica* tmp = new Pica[brojnapici + 1];
- for (int i = 0; i < brojnapici; i++)
- tmp[i] = nizaodpici[i];
- tmp[brojnapici++] = p;
- delete[] nizaodpici;
- nizaodpici = tmp;
- }
- return *this;
- }
- void piciNaPromocija() {
- for (int i = 0; i < brojnapici; i++){
- if (nizaodpici[i].getnamaluvanje() != 0){
- nizaodpici[i].pecati();
- cout << " " << nizaodpici[i].getcena() * (1 - nizaodpici[i].getnamaluvanje() / 100.0) << endl;
- }
- }
- }
- const char* getIme(){
- return imenapica;
- }
- void setIme(const char* imenapica){
- strncpy(this->imenapica, imenapica, 14);
- this->imenapica[14] = 0;
- }
- };
- int main() {
- int n;
- char ime[15];
- cin >> ime;
- cin >> n;
- Picerija p1(ime);
- for (int i = 0; i < n; i++){
- char imp[100];
- cin.get();
- cin.getline(imp, 100);
- int cena;
- cin >> cena;
- char sostojki[100];
- cin.get();
- cin.getline(sostojki, 100);
- int popust;
- cin >> popust;
- Pica p(imp, cena, sostojki, popust);
- p1+=p;
- }
- Picerija p2 = p1;
- cin >> ime;
- p2.setIme(ime);
- char imp[100];
- cin.get();
- cin.getline(imp, 100);
- int cena;
- cin >> cena;
- char sostojki[100];
- cin.get();
- cin.getline(sostojki, 100);
- int popust;
- cin >> popust;
- Pica p(imp, cena, sostojki, popust);
- p2+=p;
- cout << p1.getIme() << endl;
- cout << "Pici na promocija:" << endl;
- p1.piciNaPromocija();
- cout << p2.getIme() << endl;
- cout << "Pici na promocija:" << endl;
- p2.piciNaPromocija();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement