jordanov

[ООП] Испитна Клуб на попусти

Sep 9th, 2021
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.89 KB | None | 0 0
  1. Да се креира класа за опишување на членови на еден клуб за попусти Chlen. За секој член се чуваат податоци за името (низа од 100 знаци), тип на член (basic или premium ), основен попуст (цел број изразен во проценти), дополнителен попуст (цел број изразен во проценти) и година на членарина (цел број). (5 поени)
  2.  
  3. Сите членови на клубот имаат дополнителни поволности при користење услуги од одредени места. Основниот попуст е ист за сите членови и изнесува 10%. Оваа вредност може да се смени со одлука на клубот. Дополнителниот попуст е фиксен и важи само за premium членовите и изнесува 15% (5 поени).
  4.  
  5. За оваа класа да се имплементира оператор << за печатење на член во формат:
  6.  
  7. [ime_na_chlen]
  8.  
  9. [tip_na_chlen] [godina_na_chlenarina] [popust_koj_moze_da_go_koristi]
  10. каде попустот се добива како основен попуст доколу членот е basic или како основен + дополнителен попуст ако членот е premium. (5 поени)
  11.  
  12. Да се креира класа FINKI-club во која се чува цената на основната членарина (цел број), низа од членови (динамички алоцирана низа) и број на членови.(5 поени) За класата да се обезбедат:
  13.  
  14. operator-= за бришење на членовите во ФИНКИ-клубот кои си ја немаат обновено членарината според тековната година која се предава како параметар. (5 поени) Не смее да се дозволи годината да биде негативен број. Ако се направи обид за бришење на член според невалидна година, треба да се генерира исклучок NotValidYear. (5 поени)
  15.  
  16. operator << за печатење на сите членови на ФИНКИ-клубот. (5 поени)
  17.  
  18. функција naplatiChlenarina во која се печати секој член колку треба да плати за членарина и притоа при плаќање членарина важат соодветните попусти кои ги има членот на клубот (5 поени).
  19.  
  20. Да се обезбедат сите дополнителни методи потребни за правилно функционирање на програмата. (5 поени)
  21.  
  22. #include<iostream>
  23. #include<cstring>
  24. using namespace std;
  25.  
  26. enum tipC{basic=0, premium=1};
  27.  
  28. class Chlen{
  29.     protected:
  30.     char name[100];
  31.     int discount, addi, year;
  32.     tipC type;
  33.     public:
  34.     Chlen(){}
  35.     Chlen(char *i, tipC t, int y){
  36.         strcpy(name, i);
  37.         type=t;
  38.         year=y;
  39.         discount=10;
  40.         addi=15;
  41.     }
  42.     friend ostream& operator<<(ostream &o, Chlen &c);
  43.     char *getN(){
  44.         return name;
  45.     }
  46.     string getT(){
  47.         if(type==0)
  48.             return "basic";
  49.         else
  50.             return "premium";
  51.     }
  52.     int getG(){
  53.         return year;
  54.     }
  55.     int disc(){
  56.         if(type==0)
  57.             return discount;
  58.         else
  59.             return discount+addi;
  60.     }
  61.     void setPopust1(int x){
  62.         discount=x;
  63.     }
  64.     void setNul(){
  65.         name[0]='\0';
  66.         discount=0;
  67.         addi=0;
  68.         year=0;
  69.     }
  70. };
  71.  
  72. ostream& operator<<(ostream &o, Chlen &c){
  73.     o<<c.getN()<<endl;
  74.     o<<c.getT()<<" "<<c.getG()<<" "<<c.disc()<<endl;
  75.     return o;
  76. }
  77.  
  78. class FINKI_club{
  79.     private:
  80.     int price, n;
  81.     Chlen *cl;
  82.     public:
  83.     FINKI_club(){}
  84.     FINKI_club(int p){
  85.         price=p;
  86.     }
  87.     void setChlenovi(Chlen *c, int x){
  88.         n=x;
  89.         cl=new Chlen[n];
  90.         for(int i=0; i<n; i++){
  91.             cl[i]=c[i];
  92.         }
  93.     }
  94.     void naplatiChlenarina(){
  95.         for(int i=0; i<n; i++){
  96.             cout<<cl[i];
  97.             cout<<price-(cl[i].disc()*10)<<endl;
  98.         }
  99.     }
  100.     friend void operator-=(FINKI_club &f, int y);
  101.     friend ostream& operator<<(ostream &o, FINKI_club &f);
  102. };
  103.  
  104. ostream& operator<<(ostream &o, FINKI_club &f){
  105.     for(int i=0; i<f.n; i++){
  106.         if(f.cl[i].getG()!=0)
  107.             o<<f.cl[i];
  108.     }
  109.     return o;
  110. }
  111. void operator-=(FINKI_club &f, int y){
  112.     if(y>0){
  113.         for(int i=0; i<f.n; i++){
  114.             if(f.cl[i].getG()<y)
  115.                 //cout<<"test"<<endl;
  116.                 f.cl[i].setNul();
  117.         }
  118.     }else
  119.         cout<<"Vnesena e negativna vrednost za godinata!"<<endl;
  120. }
  121.  
  122.  
  123. int main(){
  124.     int testCase;
  125.     cin >> testCase;
  126.  
  127.     char ime[100];
  128.     int tipChlen;
  129.     int popust;
  130.     int god;
  131.  
  132.  
  133.     if (testCase == 1){
  134.         cout << "===== Testiranje na klasata Chlen ======" << endl;
  135.         cin.get();
  136.         cin.getline(ime,100);
  137.         cin >> tipChlen;
  138.         cin >> god;
  139.         cout << "===== CONSTRUCTOR ======" << endl;
  140.         Chlen c(ime, (tipC) tipChlen, god);
  141.         cout << c;
  142.  
  143.     }
  144.  
  145.     if (testCase == 2){
  146.         cout << "===== Testiranje na static clenovi ======" << endl;
  147.         cin.get();
  148.         cin.getline(ime,100);
  149.         cin >> tipChlen;
  150.         cin >> god;
  151.         cout << "===== CONSTRUCTOR ======" << endl;
  152.         Chlen c(ime, (tipC) tipChlen, god);
  153.         cout << c;
  154.  
  155.         c.setPopust1(5);
  156.  
  157.         cout << c;
  158.     }
  159.  
  160.     if (testCase == 3){
  161.         cout << "===== Testiranje na klasata FINKI-club ======" << endl;
  162.         FINKI_club fc;
  163.         int n;
  164.         cin >> n;
  165.         Chlen chlen[100];
  166.         for(int i = 0; i < n; ++i) {
  167.             cin.get();
  168.             cin.getline(ime,100);
  169.             cin >> tipChlen;
  170.             cin >> god;
  171.             Chlen c(ime, (tipC) tipChlen, god);
  172.             chlen[i] = c;
  173.         }
  174.  
  175.         fc.setChlenovi(chlen, n);
  176.  
  177.         cout << fc <<endl;
  178.     }
  179.  
  180.     if (testCase == 4){
  181.         cout << "===== Testiranje na operatorot -= ======" << endl;
  182.         FINKI_club fc;
  183.         int n;
  184.         cin >> n;
  185.         Chlen chlen[100];
  186.         for(int i = 0; i < n; ++i) {
  187.             cin.get();
  188.             cin.getline(ime,100);
  189.             cin >> tipChlen;
  190.             cin >> god;
  191.             Chlen c(ime, (tipC) tipChlen, god);
  192.             chlen[i] = c;
  193.         }
  194.  
  195.         fc.setChlenovi(chlen, n);
  196.         cout << "OPERATOR -=" << endl;
  197.         int godina;
  198.         cin >> godina;
  199.         fc-=godina;
  200.  
  201.         cout << fc;
  202.     }
  203.  
  204.     if (testCase == 5){
  205.         cout << "===== Testiranje na operatorot -= (so iskluchok) ======" << endl;
  206.         FINKI_club fc;
  207.         int n;
  208.         cin >> n;
  209.         Chlen chlen[100];
  210.         for(int i = 0; i < n; ++i) {
  211.             cin.get();
  212.             cin.getline(ime,100);
  213.             cin >> tipChlen;
  214.             cin >> god;
  215.             Chlen c(ime, (tipC) tipChlen, god);
  216.             chlen[i] = c;
  217.         }
  218.  
  219.         fc.setChlenovi(chlen, n);
  220.         cout << "OPERATOR -=" << endl;
  221.         int godina;
  222.         cin >> godina;
  223.         fc-=godina;
  224.        
  225.         cout << fc;
  226.     }
  227.  
  228.     if (testCase == 6){
  229.         cout << "===== Testiranje na metodot naplatiChlenarina  ======" << endl << endl;
  230.         FINKI_club fc(1000);
  231.         int n;
  232.         cin >> n;
  233.         Chlen chlen[100];
  234.         for(int i = 0; i < n; ++i) {
  235.             cin.get();
  236.             cin.getline(ime,100);
  237.             cin >> tipChlen;
  238.             cin >> god;
  239.             Chlen c(ime, (tipC) tipChlen, god);
  240.             chlen[i] = c;
  241.         }
  242.  
  243.         fc.setChlenovi(chlen, n);
  244.  
  245.         cout << "Naplati chlenarina:" << endl;
  246.         fc.naplatiChlenarina();
  247.     }
  248.     return 0;
  249. }
Add Comment
Please, Sign In to add comment