Advertisement
chrissj

Sladoled

Mar 23rd, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.95 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. // vashiot kod ovde
  6. class IceCream{
  7.     char *ime;
  8.     char content[100];
  9.     float cena;
  10.     int popust;
  11. public:
  12.     IceCream(){ime = NULL;}
  13.     IceCream(const char *name, const char *cont="", float price=0){
  14.         ime = new char[strlen(name+1)];
  15.         strcpy(ime, name);
  16.         strcpy(content, cont);
  17.         cena = price;
  18.         popust = 0;
  19.     }
  20.     IceCream(const IceCream &i){
  21.         ime = new char[strlen(i.ime+1)];
  22.         strcpy(ime, i.ime);
  23.         strcpy(content, i.content);
  24.         cena = i.cena;
  25.         popust = i.popust;
  26.     }
  27.     IceCream &operator=(const IceCream &i){
  28.         if(this!=&i){
  29.             delete[] ime;
  30.             ime = new char[strlen(i.ime+1)];
  31.             strcpy(ime, i.ime);
  32.             strcpy(content, i.content);
  33.             cena = i.cena;
  34.             popust = i.popust;
  35.         }
  36.         return *this;
  37.     }
  38.     void setDiscount(int disc){
  39.         if(disc > 0 && disc < 100){
  40.             popust = disc;
  41.         }
  42.     }
  43.     void setName(const char *name){
  44.         delete[] ime;
  45.         ime = new char[strlen(name)+1];
  46.         strcpy(ime, name);
  47.     }
  48.     IceCream &operator++(){
  49.         popust += 5;
  50.         return *this;
  51.     }
  52.     IceCream operator+(const IceCream &i){
  53.         IceCream New(*this);
  54.         delete[] New.ime;
  55.         New.ime = new char[strlen(ime) + strlen(i.ime) + 4];
  56.         strcpy(New.ime, ime);
  57.         strcat(New.ime, " + ");
  58.         strcat(New.ime, i.ime);
  59.         New.cena += 10;
  60.         return New;
  61.     }
  62.     ~IceCream(){delete[] ime;}
  63.     friend ostream &operator<<(ostream &o, const IceCream &i){
  64.         o << i.ime << ": " << i.content << " " << i.cena << ' ';
  65.         if(i.popust > 0){
  66.             o << "(" << i.cena - (i.cena * i.popust/100) << ")";
  67.         }
  68.         return o;
  69.     }
  70.     friend class IceCreamShop;
  71. };
  72.  
  73. class IceCreamShop{
  74.     char ime[50];
  75.     IceCream *ic;
  76.     int num;
  77. public:
  78.     IceCreamShop(const char *name=""){
  79.         ic = NULL;
  80.         strcpy(ime, name);
  81.         num = 0;
  82.     }
  83.     ~IceCreamShop(){delete[] ic;}
  84.     IceCreamShop(const IceCreamShop &ics){
  85.         strcpy(ime, ics.ime);
  86.         ic = new IceCream[ics.num];
  87.         num = ics.num;
  88.         for(int i=0; i < num; i++){
  89.             ic[i] = ics.ic[i];
  90.         }
  91.     }
  92.     IceCreamShop &operator+=(const IceCream &c){
  93.         IceCream *temp = new IceCream[num];
  94.         for(int i=0; i < num; i++){
  95.             temp[i] = ic[i];
  96.         }
  97.         delete[] ic;
  98.         ic = new IceCream[num+1];
  99.         for(int i=0; i < num; i++){
  100.             ic[i] = temp[i];
  101.         }
  102.         delete[] temp;
  103.         ic[num++] = c;
  104.         return *this;
  105.     }
  106.     friend ostream &operator<<(ostream &o, const IceCreamShop &ics){
  107.         o << ics.ime << endl;
  108.         for(int i=0; i < ics.num; i++){
  109.             o << ics.ic[i] << endl;
  110.         }
  111.         return o;
  112.     }
  113. };
  114. // zabraneto e menuvanje na main funkcijata, osven dodavanje na kodot za spravuvanje so iskluchokot na soodvetno mesto
  115.  
  116. int main() {
  117.     char name[100];
  118.     char ingr[100];
  119.     float price;
  120.     int discount;
  121.  
  122.     int testCase;
  123.  
  124.     cin >> testCase;
  125.     cin.get();
  126.     if(testCase == 1) {
  127.         cout << "====== TESTING IceCream CLASS ======" << endl;
  128.         cin.getline(name,100);
  129.         cin.getline(ingr,100);
  130.         cin >> price;
  131.         cin >> discount;
  132.         cout << "CONSTRUCTOR" << endl;
  133.         IceCream ic1(name, ingr, price);
  134.         ic1.setDiscount(discount);
  135.         cin.get();
  136.         cin.getline(name,100);
  137.         cin.getline(ingr,100);
  138.         cin >> price;
  139.         cin >> discount;
  140.         IceCream ic2(name, ingr, price);
  141.         ic2.setDiscount(discount);
  142.         cout << "OPERATOR <<" << endl;
  143.         cout << ic1 << endl;
  144.         cout << ic2 << endl;
  145.         cout << "OPERATOR ++" << endl;
  146.         ++ic1;
  147.         cout << ic1 << endl;
  148.         cout << "OPERATOR +" << endl;
  149.         IceCream ic3 = ic2 + "chocolate";
  150.         cout << ic3 << endl;
  151.     } else if(testCase == 2) {
  152.         cout << "====== TESTING IceCream CONSTRUCTORS ======" << endl;
  153.         cin.getline(name,100);
  154.         cin.getline(ingr,100);
  155.         cin >> price;
  156.         cout << "CONSTRUCTOR" << endl;
  157.         IceCream ic1(name, ingr, price);
  158.         cout << ic1 << endl;
  159.         cout << "COPY CONSTRUCTOR" << endl;
  160.         IceCream ic2(ic1);
  161.         cin.get();
  162.         cin.getline(name,100);
  163.         ic2.setName(name);
  164.         cout << ic1 << endl;
  165.         cout << ic2 << endl;
  166.         cout << "OPERATOR =" << endl;
  167.         ic1 = ic2;
  168.         cin.getline(name,100);
  169.         ic2.setName(name);
  170.         cout << ic1 << endl;
  171.         cout << ic2 << endl;
  172.        
  173.         cin >> discount;
  174.         ic1.setDiscount(discount);
  175.  
  176.  
  177.     } else if(testCase == 3) {
  178.         cout << "====== TESTING IceCreamShop ======" << endl;
  179.         char icsName[50];
  180.         cin.getline(icsName,100);
  181.         cout << "CONSTRUCTOR" << endl;
  182.         IceCreamShop ics(icsName);
  183.         int n;
  184.         cin >> n;
  185.         cout << "OPERATOR +=" << endl;
  186.         for(int i = 0; i < n; ++i) {
  187.             cin.get();
  188.             cin.getline(name,100);
  189.             cin.getline(ingr,100);
  190.             cin >> price;
  191.             IceCream ic(name, ingr, price);
  192.             ics += ic;
  193.         }
  194.         cout << ics;
  195.     } else if(testCase == 4) {
  196.         cout << "====== TESTING IceCreamShop CONSTRUCTORS ======" << endl;
  197.         char icsName[50];
  198.         cin.getline(icsName,100);
  199.         IceCreamShop ics(icsName);
  200.         int n;
  201.         cin >> n;
  202.         for(int i = 0; i < n; ++i) {
  203.             cin.get();
  204.             cin.getline(name,100);
  205.             cin.getline(ingr,100);
  206.             cin >> price;
  207.             IceCream ic(name, ingr, price);
  208.             ics += ic;
  209.         }
  210.         IceCream x("FINKI fruits", "strawberry ice cream, raspberry ice cream, blueberry ice cream", 60);
  211.         IceCreamShop icp = ics;
  212.         ics+=x;
  213.         cout << ics << endl;
  214.         cout << icp << endl;
  215.     }
  216.  
  217.  
  218.     return 0;
  219. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement