Advertisement
MikiStrail

ООП Лаб 4

Apr 1st, 2019
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.10 KB | None | 0 0
  1. 1. Паркинг
  2.  
  3. #include<iostream>
  4. #include<cstring>
  5. using namespace std;
  6. //вашиот код
  7. class ParkingPlac{
  8. private:
  9.     char adresa[20];
  10.     char *id;
  11.     int cena,zarabotka;
  12. public:
  13.     //constructors
  14.     ParkingPlac(){}
  15.     ParkingPlac(char *adresa,char *id,int cena){
  16.         strcpy(this->adresa,adresa);
  17.         this->id=new char[strlen(id)+1];
  18.         strcpy(this->id,id);
  19.         this->cena=cena;
  20.         this->zarabotka=0;
  21.     }
  22.     //copy
  23.     ParkingPlac(const ParkingPlac &p){
  24.         strcpy(this->adresa,p.adresa);
  25.         this->id=new char[strlen(p.id)+1];
  26.         strcpy(this->id,p.id);
  27.         this->cena=p.cena;
  28.         this->zarabotka=p.zarabotka;
  29.     }
  30.     //operator=
  31.     ParkingPlac& operator=(const ParkingPlac &p){
  32.         if(this==&p)return *this;
  33.         delete [] id;
  34.         strcpy(this->adresa,p.adresa);
  35.         this->id=new char[strlen(p.id)+1];
  36.         strcpy(this->id,p.id);
  37.         this->cena=p.cena;
  38.         this->zarabotka=p.zarabotka;
  39.         return *this;
  40.     }
  41.     //~ParkingPlac(){delete [] id;}
  42.    
  43.     //metodi
  44.    
  45.     char *getId(){
  46.         return id;
  47.     }
  48.    
  49.     void pecati(){
  50.         if(zarabotka){
  51.             cout<<id<<" "<<adresa<<" - "<<zarabotka<<" denari"<<endl;
  52.         }
  53.         else
  54.             cout<<id<<" "<<adresa<<endl;
  55.     }
  56.    
  57.     void platiCasovi(int casovi){
  58.         zarabotka+=casovi*cena;
  59.     }
  60.     bool daliIstaAdresa(ParkingPlac p){
  61.         if(strcmp(adresa,p.adresa)==0)return true;
  62.         else return false;
  63.     }
  64. };
  65. int main(){
  66.  
  67.  
  68.     ParkingPlac p[100];
  69.     int n,m;
  70.     char adresa[50],id[50];
  71.     int brojcasovi,cenacas;
  72.     cin>>n;
  73.     for (int i=0;i<n;i++){
  74.         cin.get();
  75.         cin.getline(adresa,50);
  76.         cin>>id>>cenacas;
  77.        
  78.         ParkingPlac edna(adresa,id,cenacas);
  79.        
  80.         //povik na operatorot =
  81.         p[i]=edna;
  82.     }
  83.    
  84.     //plakjanje
  85.     cin>>m;
  86.     for (int i=0;i<m;i++){
  87.  
  88.         cin>>id>>brojcasovi;
  89.        
  90.         int findId=false;
  91.         for (int j=0;j<n;j++){
  92.             if (strcmp(p[j].getId(),id)==0){
  93.                 p[j].platiCasovi(brojcasovi);
  94.                 findId=true;
  95.             }
  96.         }
  97.         if (!findId)
  98.         cout<<"Ne e platen parking. Greshen ID."<<endl;
  99.     }
  100.  
  101.     cout<<"========="<<endl;
  102.     ParkingPlac pCentar("Cvetan Dimov","C10",80);
  103.     for (int i=0;i<n;i++)
  104.         if (p[i].daliIstaAdresa(pCentar))
  105.             p[i].pecati();
  106.  
  107. }
  108.  
  109. 3. Пицерија
  110.  
  111. using namespace std;
  112. #include <iostream>
  113. #include <cstring>
  114.  
  115. class Pica{
  116. private:
  117. char ime[15];
  118. int cena;
  119. char *sostojki;
  120. int namaluvanje;
  121. public:
  122. Pica(){sostojki = new char[0];}
  123.    
  124. Pica(char *ime, int cena, char *s, int n)
  125. {
  126.     strcpy(this->ime, ime);
  127.     this->cena=cena;
  128.     sostojki=new char [strlen(s)+1];
  129.     strcpy(sostojki,s);
  130.     namaluvanje=n;
  131. }
  132.    
  133. Pica(const Pica &p)
  134. {
  135.     strcpy(ime,p.ime);
  136.     cena=p.cena;
  137.     sostojki=new char [strlen(p.sostojki)+1];
  138.     strcpy(sostojki,p.sostojki);
  139.     namaluvanje=p.namaluvanje;
  140. }
  141.    
  142. Pica& operator= (const Pica &p) // preoptovaruvanje na =
  143. {
  144.     if(this!=&p)
  145.     {
  146.         delete[] sostojki;
  147.         strcpy(ime,p.ime);
  148.         cena=p.cena;
  149.         sostojki=new char [strlen(p.sostojki)+1];
  150.         strcpy(sostojki,p.sostojki);
  151.         namaluvanje=p.namaluvanje;
  152.     }
  153.     return *this;
  154. }
  155.    
  156. ~Pica(){delete[] sostojki;} // destructor
  157. int getNamaluvanje(){return namaluvanje;}
  158. char* getSostojki(){return sostojki;}
  159.  
  160. void pecati()
  161. {
  162.     cout<<ime<<" - "<<sostojki<<", "<<cena<<" "<<cena-cena*namaluvanje/100;
  163. }
  164.  
  165. bool istiSe(Pica p)
  166. {
  167.     if(strcpy(p.sostojki,sostojki)==0)
  168.     return 1;
  169.     else return 0;
  170. }
  171.  
  172. };
  173.  
  174.  
  175. class Picerija{
  176. private:
  177.     char ime[15];
  178.     Pica *pici;
  179.     int brPici;
  180.  
  181. public:
  182. Picerija(){pici=new Pica[0];}
  183. Picerija(char *ime, Pica *p, int brP) {
  184.     strcpy(this->ime,ime);
  185.     pici=new Pica[brP];
  186.     for(int i=0;i<brP;i++)
  187.         pici[i]=p[i];
  188.     brPici=brP;
  189. }
  190.  
  191. Picerija(char *ime)
  192. {
  193.     strcpy(this->ime,ime);
  194.     pici=new Pica[0];
  195.     brPici=0;
  196. }
  197.  
  198. Picerija(const Picerija &p)
  199. {
  200.     strcpy(ime,p.ime);
  201.     pici=new Pica [p.brPici];
  202.     for(int i=0;i<p.brPici;i++)
  203.         pici[i]=p.pici[i];
  204.     brPici=p.brPici;
  205. }
  206.  
  207. Picerija& operator= (const Picerija &p)
  208. {
  209.     if(this!=&p)
  210.     {
  211.     delete [] pici;
  212.     strcpy(ime,p.ime);
  213.     pici=new Pica [p.brPici];
  214.     for(int i=0;i<p.brPici;i++)
  215.     pici[i]=p.pici[i];
  216.     brPici=p.brPici;
  217.     }
  218. return *this;
  219. }
  220.  
  221. ~Picerija(){delete[] pici;}
  222.  
  223. void setIme(char *ime){strcpy(this->ime,ime);}
  224. char* getIme(){return ime;}
  225. void dodadi(Pica P)
  226. {
  227.     for(int i=0;i<brPici;i++)
  228.     if(strcmp(P.getSostojki(),pici[i].getSostojki())==0)
  229.         return;
  230.     Pica *tmp;
  231.     tmp=new Pica[brPici];
  232.     for(int i=0;i<brPici;i++)
  233.         tmp[i]=pici[i];
  234.     delete[] pici;
  235.     pici=new Pica[brPici+1];
  236.     for(int i=0;i<brPici;i++)
  237.         pici[i]=tmp[i];
  238.     pici[brPici]=P;
  239.     brPici++;
  240.     delete [] tmp;
  241. }
  242.  
  243. void piciNaPromocija()
  244. {
  245.     for(int i=0;i<brPici;i++)
  246.     if(pici[i].getNamaluvanje()>0){
  247.         pici[i].pecati();
  248.     cout<<endl;}
  249. }
  250. };
  251. int main () {
  252.     int n;
  253.     char ime[15];
  254.     cin >> ime;
  255.     cin >> n;
  256.     Picerija p1(ime);
  257.     for(int i = 0; i < n; i++){
  258.         char imp[100];
  259.         cin.get();
  260.         cin.getline(imp,100);
  261.         int cena;
  262.         cin >> cena;
  263.         char sostojki[100];
  264.         cin.get();
  265.         cin.getline(sostojki,100);
  266.         int popust;
  267.         cin >> popust;
  268.         Pica p(imp,cena,sostojki,popust);
  269.         p1.dodadi(p);
  270.     }
  271.    
  272.     Picerija p2 = p1;
  273.     cin >> ime;
  274.     p2.setIme(ime);
  275.     char imp[100];
  276.     cin.get();
  277.     cin.getline(imp,100);
  278.     int cena;
  279.     cin >> cena;
  280.     char sostojki[100];
  281.     cin.get();
  282.     cin.getline(sostojki,100);
  283.     int popust;
  284.     cin >> popust;
  285.     Pica p(imp,cena,sostojki,popust);
  286.     p2.dodadi(p);
  287.    
  288.     cout<<p1.getIme()<<endl;
  289.     cout<<"Pici na promocija:"<<endl;
  290.     p1.piciNaPromocija();
  291.    
  292.     cout<<p2.getIme()<<endl;
  293.     cout<<"Pici na promocija:"<<endl;
  294.     p2.piciNaPromocija();
  295.     return 0;
  296. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement