Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- // vashiot kod ovde
- class IceCream{
- char *ime;
- char content[100];
- float cena;
- int popust;
- public:
- IceCream(){ime = NULL;}
- IceCream(const char *name, const char *cont="", float price=0){
- ime = new char[strlen(name+1)];
- strcpy(ime, name);
- strcpy(content, cont);
- cena = price;
- popust = 0;
- }
- IceCream(const IceCream &i){
- ime = new char[strlen(i.ime+1)];
- strcpy(ime, i.ime);
- strcpy(content, i.content);
- cena = i.cena;
- popust = i.popust;
- }
- IceCream &operator=(const IceCream &i){
- if(this!=&i){
- delete[] ime;
- ime = new char[strlen(i.ime+1)];
- strcpy(ime, i.ime);
- strcpy(content, i.content);
- cena = i.cena;
- popust = i.popust;
- }
- return *this;
- }
- void setDiscount(int disc){
- if(disc > 0 && disc < 100){
- popust = disc;
- }
- }
- void setName(const char *name){
- delete[] ime;
- ime = new char[strlen(name)+1];
- strcpy(ime, name);
- }
- IceCream &operator++(){
- popust += 5;
- return *this;
- }
- IceCream operator+(const IceCream &i){
- IceCream New(*this);
- delete[] New.ime;
- New.ime = new char[strlen(ime) + strlen(i.ime) + 4];
- strcpy(New.ime, ime);
- strcat(New.ime, " + ");
- strcat(New.ime, i.ime);
- New.cena += 10;
- return New;
- }
- ~IceCream(){delete[] ime;}
- friend ostream &operator<<(ostream &o, const IceCream &i){
- o << i.ime << ": " << i.content << " " << i.cena << ' ';
- if(i.popust > 0){
- o << "(" << i.cena - (i.cena * i.popust/100) << ")";
- }
- return o;
- }
- friend class IceCreamShop;
- };
- class IceCreamShop{
- char ime[50];
- IceCream *ic;
- int num;
- public:
- IceCreamShop(const char *name=""){
- ic = NULL;
- strcpy(ime, name);
- num = 0;
- }
- ~IceCreamShop(){delete[] ic;}
- IceCreamShop(const IceCreamShop &ics){
- strcpy(ime, ics.ime);
- ic = new IceCream[ics.num];
- num = ics.num;
- for(int i=0; i < num; i++){
- ic[i] = ics.ic[i];
- }
- }
- IceCreamShop &operator+=(const IceCream &c){
- IceCream *temp = new IceCream[num];
- for(int i=0; i < num; i++){
- temp[i] = ic[i];
- }
- delete[] ic;
- ic = new IceCream[num+1];
- for(int i=0; i < num; i++){
- ic[i] = temp[i];
- }
- delete[] temp;
- ic[num++] = c;
- return *this;
- }
- friend ostream &operator<<(ostream &o, const IceCreamShop &ics){
- o << ics.ime << endl;
- for(int i=0; i < ics.num; i++){
- o << ics.ic[i] << endl;
- }
- return o;
- }
- };
- // zabraneto e menuvanje na main funkcijata, osven dodavanje na kodot za spravuvanje so iskluchokot na soodvetno mesto
- int main() {
- char name[100];
- char ingr[100];
- float price;
- int discount;
- int testCase;
- cin >> testCase;
- cin.get();
- if(testCase == 1) {
- cout << "====== TESTING IceCream CLASS ======" << endl;
- cin.getline(name,100);
- cin.getline(ingr,100);
- cin >> price;
- cin >> discount;
- cout << "CONSTRUCTOR" << endl;
- IceCream ic1(name, ingr, price);
- ic1.setDiscount(discount);
- cin.get();
- cin.getline(name,100);
- cin.getline(ingr,100);
- cin >> price;
- cin >> discount;
- IceCream ic2(name, ingr, price);
- ic2.setDiscount(discount);
- cout << "OPERATOR <<" << endl;
- cout << ic1 << endl;
- cout << ic2 << endl;
- cout << "OPERATOR ++" << endl;
- ++ic1;
- cout << ic1 << endl;
- cout << "OPERATOR +" << endl;
- IceCream ic3 = ic2 + "chocolate";
- cout << ic3 << endl;
- } else if(testCase == 2) {
- cout << "====== TESTING IceCream CONSTRUCTORS ======" << endl;
- cin.getline(name,100);
- cin.getline(ingr,100);
- cin >> price;
- cout << "CONSTRUCTOR" << endl;
- IceCream ic1(name, ingr, price);
- cout << ic1 << endl;
- cout << "COPY CONSTRUCTOR" << endl;
- IceCream ic2(ic1);
- cin.get();
- cin.getline(name,100);
- ic2.setName(name);
- cout << ic1 << endl;
- cout << ic2 << endl;
- cout << "OPERATOR =" << endl;
- ic1 = ic2;
- cin.getline(name,100);
- ic2.setName(name);
- cout << ic1 << endl;
- cout << ic2 << endl;
- cin >> discount;
- ic1.setDiscount(discount);
- } else if(testCase == 3) {
- cout << "====== TESTING IceCreamShop ======" << endl;
- char icsName[50];
- cin.getline(icsName,100);
- cout << "CONSTRUCTOR" << endl;
- IceCreamShop ics(icsName);
- int n;
- cin >> n;
- cout << "OPERATOR +=" << endl;
- for(int i = 0; i < n; ++i) {
- cin.get();
- cin.getline(name,100);
- cin.getline(ingr,100);
- cin >> price;
- IceCream ic(name, ingr, price);
- ics += ic;
- }
- cout << ics;
- } else if(testCase == 4) {
- cout << "====== TESTING IceCreamShop CONSTRUCTORS ======" << endl;
- char icsName[50];
- cin.getline(icsName,100);
- IceCreamShop ics(icsName);
- int n;
- cin >> n;
- for(int i = 0; i < n; ++i) {
- cin.get();
- cin.getline(name,100);
- cin.getline(ingr,100);
- cin >> price;
- IceCream ic(name, ingr, price);
- ics += ic;
- }
- IceCream x("FINKI fruits", "strawberry ice cream, raspberry ice cream, blueberry ice cream", 60);
- IceCreamShop icp = ics;
- ics+=x;
- cout << ics << endl;
- cout << icp << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement