Advertisement
madalinaradu

POO judet

May 27th, 2019
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.01 KB | None | 0 0
  1. #include <string.h>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. #define NR_MAX_LOC 100
  6. #define MAX 40
  7.  
  8. class Localitate {
  9. protected:
  10.     char nume[MAX];
  11.     int nrLocuitori;
  12. public:
  13.     Localitate(const char *nume = "",  int nrLocuitori = 0);
  14.     void setNume(const char *nume);
  15.     char* getNume();
  16.     void setNrLocuitori(int nrLocuitori);
  17.     int getNrLocuitori();
  18.     virtual void afisare();
  19. };
  20.  
  21.  
  22. Localitate::Localitate(const char *nume, int nrLocuitori) {
  23.     ///this->numar = new char[strlen(numar)+1];
  24.     ///strcpy(this->numar, numar);
  25.     strncpy(this -> nume, nume, MAX);
  26.     this -> nrLocuitori = nrLocuitori;
  27. }
  28.  
  29. void Localitate::setNume(const char *nume) {
  30.     /**
  31.     if(strlen(this->numar)<strlen(numar)) {
  32.     delete []this->numar;
  33.     this->numar = new char[strlen(numar)+1];
  34.   }
  35.   strcpy(this->numar, numar);
  36.   **/
  37.     strncpy(this -> nume, nume, MAX);
  38. }
  39. char* Localitate::getNume() {
  40.     return nume;
  41. }
  42.  
  43. void Localitate::setNrLocuitori(int nrLocuitori) {
  44.     this->nrLocuitori = nrLocuitori;
  45. }
  46. int Localitate::getNrLocuitori() {
  47.     return nrLocuitori;
  48. }
  49.  
  50. void Localitate::afisare() {
  51.     cout<<"Nume: "<<nume<<endl;
  52.     cout<<"Numar locuitori: "<<nrLocuitori<<endl;
  53. }
  54.  
  55. class Sat: public Localitate {
  56. public:
  57.     Sat(const char *nume = "",  int nrLocuitori = 0);
  58.     void afisare();
  59. };
  60.  
  61. Sat::Sat(const char *nume,  int nrLocuitori):Localitate(nume, nrLocuitori) {
  62.  
  63. }
  64.  
  65. void Sat::afisare() {
  66.     cout<<"Sat"<<endl;
  67.     cout<<"---------------------------------"<<endl;
  68.     Localitate::afisare();
  69.     cout<<"---------------------------------"<<endl;
  70. }
  71. class Oras: public Localitate {
  72.     int nrBlocuri;
  73. public:
  74.     Oras(const char *nume = "",  int nrLocuitori = 0, int nrBlocuri = 0);
  75.     void afisare();
  76. };
  77.  
  78. Oras::Oras(const char *nume,  int nrLocuitori, int nrBlocuri):Localitate(nume, nrLocuitori) {
  79.     this->nrBlocuri = nrBlocuri;
  80. }
  81.  
  82. void Oras::afisare() {
  83.     cout<<"Oras"<<endl;
  84.     cout<<"---------------------------------"<<endl;
  85.     Localitate::afisare();
  86.     cout<<"---------------------------------"<<endl;
  87. }
  88.  
  89.  
  90. class Judet {
  91.     char nume[MAX];
  92.     Localitate *L[NR_MAX_LOC];
  93.     int nrLocalitati;
  94. public:
  95.     Judet(const char *nume = "");
  96.     void adaugaLocalitate(Localitate *pl);
  97.     void afisare();
  98. };
  99.  
  100. Judet::Judet(const char *nume) {//////////////////////////////////////////////////////
  101.     strncpy(this -> nume, nume, MAX);
  102.     nrLocalitati = 0 ;
  103. }
  104.  
  105. void Judet::adaugaLocalitate(Localitate *pl) {
  106.     if (nrLocalitati < NR_MAX_LOC) {
  107.         L[nrLocalitati]=pl;
  108.         nrLocalitati++;
  109.     } else {
  110.         throw out_of_range("Depasire capacitate");
  111.     }
  112. }
  113.  
  114. void Judet::afisare() {
  115.     cout<<"Judet: "<<nume<<endl;
  116.     cout<<"================================="<<endl;
  117.     for(int i=0; i<nrLocalitati; i++) {
  118.         L[i]->afisare();
  119.  
  120.     }
  121. }
  122. int main() {
  123.     Judet judet("Dolj");
  124.     judet.adaugaLocalitate(new Sat("Poplaca", 100));
  125.     judet.adaugaLocalitate(new Oras("Craiova", 100000, 400));
  126.     judet.afisare();
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement