Advertisement
nankovmkd

plakjac

Apr 2nd, 2019
308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.92 KB | None | 0 0
  1. /*Да се дефинира класа ParkingPlac во која се чуваат податоци за:
  2.  
  3. Адреса на плацот (низа од знаци, максимум 20),
  4. Идентификациски број на плацот (динамичка низа од знаци),
  5. Цена за паркирање за 1 час (цел број),
  6. Заработка на паркинг плацот (цел број)
  7. параметри потребни за дополнителниот дел од задачата:
  8.  
  9. Динамичка низа од класата Avtomobil
  10. Број на паркирани автомобили во даден момент
  11. За потребите на класата да се имплементираат :
  12.  
  13. соодветни конструктори и деструктор, и потребните get-функции (погледнете ги повиците во main функцијата)
  14. функција pecati() за печатење на податоците за еден паркинг плац во следниот формат:
  15.  
  16. идентификациски_број адреса - X denari, ако X е заработката на паркинг плацот X не е 0
  17.  
  18. идентификациски_број адреса , ако X =0
  19.  
  20. функција platiCasovi(int casovi) која на заработката ја додава платената вредност за дадениот број на часови.
  21.  
  22. функција daliIstaAdresa(ParkingPlac p) во која се споредува дали дадениот паркинг плац е на иста адреса како паркинг плацот p.
  23. Во дадената main функција прво се внесуваат n паркинг плацеви. Потоа се внесуваат m плаќања и на крај се печатат сите паркинг плацеви од низата кои имаат иста адреса со дадениот паркинг плац (објектот pCentar).
  24.  
  25. ДОПОЛНИТЕЛНО БАРАЊЕ
  26.  
  27. Дефинирајте класа Avtomobilво која се чуваат податоците за:
  28.  
  29. Бојата на автомобилот (низа од знаци, максимум 20)
  30. Брендот на автомобилот (низа од знаци, максимум 20)
  31. Моделот на автомобилот (низа од знаци, максимум 20)
  32. За потребите на класата ќе треба да :
  33.  
  34. Се имплементира конструктор
  35. Да го преоптоварите assignment operator-от
  36. Понатака да пишете метод за класата ParkingPlac наречен parkirajVozilo(Avtomobil novoVozilo), неговата цел ќе биде да се паркира ново возило на паркингот во кој се повикува методот.
  37.  
  38. На крај ќе треба да се испечатат паркираните возила во еден паркинг преку методот pecatiParkiraniVozila() кој исто така треба да биде имплементиран во класата ParkingPlac.
  39.  
  40. Ориентирајте се според дадениот код во main методот за како се ова треба да го имплементирате. */
  41. #include <iostream>
  42. #include <cstring>
  43. using namespace std;
  44. class Avtomobil{
  45.   private:
  46.   char boja[20];
  47.   char brend[20];
  48.   char model[20];
  49.   int n;
  50.   public:
  51.   Avtomobil() {}
  52.   Avtomobil(char *boja, char *brend, char *model){
  53.     strcpy(this->boja, boja);
  54.     strcpy(this->brend, brend);
  55.     strcpy(this->model, model);
  56.     n=1;
  57.   }
  58.   Avtomobil(const Avtomobil &a){
  59.     strcpy(boja, a.boja);
  60.     strcpy(brend, a.brend);
  61.     strcpy(model, a.model);
  62.   }
  63.   Avtomobil &operator=(const Avtomobil &a){
  64.     if(this!=&a){
  65.     strcpy(boja, a.boja);
  66.     strcpy(brend, a.brend);
  67.     strcpy(model, a.model);
  68.   }
  69.   return *this;
  70.   }
  71.   void pecati(){
  72.         cout << boja << " " << brend << " "<< model <<endl;
  73.     }
  74.  
  75. };
  76. class ParkingPlac{
  77.   private:
  78.   char adresa[20];
  79.   char *id;
  80.   int cena;
  81.   int zarabotka;
  82.   int n;
  83.   Avtomobil *avto;
  84.   public:
  85.   ParkingPlac() {}
  86.   ParkingPlac(char *adresa, char *id, int cena){
  87.     strcpy(this->adresa, adresa);
  88.     this->id =new char[strlen(id+1)];
  89.     strncpy(this->id, id, strlen(id+1));
  90.     this->cena=cena;
  91.     this->zarabotka=zarabotka;
  92.     n=1;
  93.     avto= new Avtomobil[n];
  94.   }
  95.   ~ParkingPlac(){
  96.     delete [] id;
  97.     delete[] avto;
  98.   }
  99.   ParkingPlac(const ParkingPlac &p){
  100.     strcpy(this->adresa, p.adresa);
  101.     this->id =new char[strlen(p.id+1)];
  102.     strncpy(this->id, p.id, strlen(p.id+1));
  103.     this->cena=p.cena;
  104.     this->zarabotka=p.zarabotka;
  105.   }
  106.   char *getAdresa(){
  107.     return adresa;
  108.   }
  109.   char *getId(){
  110.     return id;
  111.   }
  112.   int getCena() {
  113.     return cena;}
  114.     int getZarabotka() {return zarabotka;}
  115.     void pecati() {
  116.       cout<<id<<" "<<adresa<<" ";
  117.       if(zarabotka!=0)
  118.       cout<<zarabotka<<" denari"<<endl;
  119.      
  120.     }
  121.    void platiCasovi(int casovi){
  122.       zarabotka+=casovi*cena;
  123.    
  124.     }
  125.     bool daliIstaAdresa(ParkingPlac p){
  126.       if(strcmp(p.getAdresa(), adresa)==0)
  127.       return true;
  128.       else return false;
  129.     }
  130.    
  131.   void parkirajVozilo(Avtomobil novoVozilo){
  132.  Avtomobil *tmp=new Avtomobil[n+1];
  133.  for(int i=0;i<n;i++)
  134.    tmp[i]=avto[i];
  135.    tmp[n++]=novoVozilo;
  136.    delete [] avto;
  137.    avto=tmp;
  138.  
  139.   }
  140.   void pecatiParkiraniVozila(){
  141.     cout<<"Vo parkingot se parkirani slednite vozila: "<<endl;
  142.     for(int i=1;i<n;i++){
  143.       cout<<i<<".";
  144.       avto[i].pecati();
  145.     }
  146.   }
  147.  
  148. };
  149.  
  150. int main() {
  151.  ParkingPlac p[100];
  152. int n,m;
  153. char adresa[50],id[50];
  154. int brojcasovi,cenacas;
  155. cin>>n;
  156. if(n > 0){
  157.  
  158.  
  159. for (int i=0;i<n;i++){
  160.         cin.get();
  161. cin.getline(adresa,50);
  162. cin>>id>>cenacas;
  163. ParkingPlac edna(adresa,id,cenacas);
  164.  
  165.         //povik na operatorot =
  166.         p[i]=edna;
  167. }
  168.  
  169. //plakjanje
  170. cin>>m;
  171. for (int i=0;i<m;i++){
  172.  
  173. cin>>id>>brojcasovi;
  174.  
  175.         int findId=false;
  176.         for (int j=0;j<m;j++){
  177.             if (strcmp(p[j].getId(),id)==0){
  178.                 p[j].platiCasovi(brojcasovi);
  179.                 findId=true;
  180.             }
  181.         }
  182. if (!findId)
  183.         cout<<"Ne e platen parking. Greshen ID."<<endl;
  184. }
  185.  
  186.     cout<<"========="<<endl;
  187.     ParkingPlac pCentar("Cvetan Dimov","C10",80);
  188. for (int i=0;i<n;i++)
  189.         if (p[i].daliIstaAdresa(pCentar))
  190.             p[i].pecati();
  191. } else {
  192.  
  193. ParkingPlac najdobarPlac("Mars", "1337", 1);
  194.     int brVozila;
  195.     cin >> brVozila;
  196.     for(int i = 0; i < brVozila; ++i){
  197.  
  198.     char boja[20];
  199.     char brend[20];
  200.     char model[20];
  201.  
  202.     cin >> boja >> brend >> model;
  203.     Avtomobil novAvtomobil(boja, brend, model);
  204.     najdobarPlac.parkirajVozilo(novAvtomobil);
  205.     }
  206.     if(brVozila != 0)
  207.     najdobarPlac.pecatiParkiraniVozila();
  208. }
  209. return 0;
  210.  
  211. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement