Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string.h>
- #include <iostream>
- using namespace std;
- #define NR_MAX_LOC 100
- #define MAX 40
- class Localitate {
- protected:
- char nume[MAX];
- int nrLocuitori;
- public:
- Localitate(const char *nume = "", int nrLocuitori = 0);
- void setNume(const char *nume);
- char* getNume();
- void setNrLocuitori(int nrLocuitori);
- int getNrLocuitori();
- virtual void afisare();
- };
- Localitate::Localitate(const char *nume, int nrLocuitori) {
- ///this->numar = new char[strlen(numar)+1];
- ///strcpy(this->numar, numar);
- strncpy(this -> nume, nume, MAX);
- this -> nrLocuitori = nrLocuitori;
- }
- void Localitate::setNume(const char *nume) {
- /**
- if(strlen(this->numar)<strlen(numar)) {
- delete []this->numar;
- this->numar = new char[strlen(numar)+1];
- }
- strcpy(this->numar, numar);
- **/
- strncpy(this -> nume, nume, MAX);
- }
- char* Localitate::getNume() {
- return nume;
- }
- void Localitate::setNrLocuitori(int nrLocuitori) {
- this->nrLocuitori = nrLocuitori;
- }
- int Localitate::getNrLocuitori() {
- return nrLocuitori;
- }
- void Localitate::afisare() {
- cout<<"Nume: "<<nume<<endl;
- cout<<"Numar locuitori: "<<nrLocuitori<<endl;
- }
- class Sat: public Localitate {
- public:
- Sat(const char *nume = "", int nrLocuitori = 0);
- void afisare();
- };
- Sat::Sat(const char *nume, int nrLocuitori):Localitate(nume, nrLocuitori) {
- }
- void Sat::afisare() {
- cout<<"Sat"<<endl;
- cout<<"---------------------------------"<<endl;
- Localitate::afisare();
- cout<<"---------------------------------"<<endl;
- }
- class Oras: public Localitate {
- int nrBlocuri;
- public:
- Oras(const char *nume = "", int nrLocuitori = 0, int nrBlocuri = 0);
- void afisare();
- };
- Oras::Oras(const char *nume, int nrLocuitori, int nrBlocuri):Localitate(nume, nrLocuitori) {
- this->nrBlocuri = nrBlocuri;
- }
- void Oras::afisare() {
- cout<<"Oras"<<endl;
- cout<<"---------------------------------"<<endl;
- Localitate::afisare();
- cout<<"---------------------------------"<<endl;
- }
- class Judet {
- char nume[MAX];
- Localitate *L[NR_MAX_LOC];
- int nrLocalitati;
- public:
- Judet(const char *nume = "");
- void adaugaLocalitate(Localitate *pl);
- void afisare();
- };
- Judet::Judet(const char *nume) {//////////////////////////////////////////////////////
- strncpy(this -> nume, nume, MAX);
- nrLocalitati = 0 ;
- }
- void Judet::adaugaLocalitate(Localitate *pl) {
- if (nrLocalitati < NR_MAX_LOC) {
- L[nrLocalitati]=pl;
- nrLocalitati++;
- } else {
- throw out_of_range("Depasire capacitate");
- }
- }
- void Judet::afisare() {
- cout<<"Judet: "<<nume<<endl;
- cout<<"================================="<<endl;
- for(int i=0; i<nrLocalitati; i++) {
- L[i]->afisare();
- }
- }
- int main() {
- Judet judet("Dolj");
- judet.adaugaLocalitate(new Sat("Poplaca", 100));
- judet.adaugaLocalitate(new Oras("Craiova", 100000, 400));
- judet.afisare();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement