SlavkovB

Болница OOP Ecercises

Jun 15th, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.32 KB | None | 0 0
  1. Болница Problem 2 (0 / 0)
  2. Да се дефинира класата Pacient во која се чуваат информации за (5 поени):
  3.  
  4. име презиме (низа од најмногу 30 знаци),
  5. ID (цел број),
  6. дијагноза (динамички резервирана низа од знаци),
  7. клиника на која е примен пациентот (низа од најмногу 30 знаци)
  8. Да се обезбедат сите потребни методи за класата за правилно функционирање на програмата. (10 поени)
  9.  
  10. Дополнително за оваа класа да се дефинира методот:
  11.  
  12. pecati() - функција со која ќе се печатат податоците за пациентот во формат: ID - дијагноза (5 поени)
  13. Да се креира класата Bolnica во која се чуваат информации за (5 поени):
  14.  
  15. име на болницата (низа од најмногу 30 знаци)
  16. листа од пациенти (низа од најмногу 100 објекти од класата Pacient),
  17. број на пациенти (цел број)
  18. Да се обезбедат сите потребни методи за класата за правилно функционирање на програмата. (5 поени)
  19.  
  20. Дополнително за оваа класа да се дефинираат методите:
  21.  
  22. dodadiPacient (Pacient p)- со кој се додава нов пациент во листата, но само ако има место да се прими нов пациент (се смета дека во болницата може да се примат најмногу 100 пациенти) и нема друг пациент во листата со истo ID(10 поени)
  23. pecatiPacientiPoKlinika (char* k) – со кој се печатат сите пациенти во болницата примени на клиниката k (10 поени)
  24.  
  25. Sample input
  26. 1
  27. Petko 11234 alergiska_reakcija_na_polen Alergologija
  28.  
  29. Sample output
  30. ===== Testiranje na klasata Pacient ======
  31. 11234 - alergiska_reakcija_na_polen
  32.  
  33. //CODE//
  34.  
  35.  
  36. #include<iostream>
  37. #include<cstring>
  38. using namespace std;
  39. class Pacient{
  40.  
  41.     char ime[30];
  42.     int id;
  43.     char *dijagnoza;
  44.     char klinika[30];
  45.     public:
  46.     char *getKlin(){return this -> klinika;}
  47.     Pacient(const char *ime = " ", int id = 0, const char * dijagnoza = " ", const char * klinika = " "){
  48.     strcpy(this -> ime, ime);
  49.     this -> id = id;
  50.     this -> dijagnoza = new char[strlen(dijagnoza) + 1];
  51.     strcpy(this -> dijagnoza, dijagnoza);
  52.     strcpy(this -> klinika, klinika);
  53.     }
  54.     Pacient(const Pacient &p){
  55.     strcpy(this -> ime, p.ime);
  56.     this -> id = p.id;
  57.     this -> dijagnoza = new char[strlen(p.dijagnoza) + 1];
  58.     strcpy(this -> dijagnoza, p.dijagnoza);
  59.     strcpy(this -> klinika, p.klinika);
  60.     }
  61.     Pacient &operator=(const Pacient &p){
  62.         if(this != &p){
  63.         strcpy(this -> ime, p.ime);
  64.     this -> id = p.id;
  65.         delete [] dijagnoza;
  66.     this -> dijagnoza = new char[strlen(p.dijagnoza) + 1];
  67.     strcpy(this -> dijagnoza, p.dijagnoza);
  68.     strcpy(this -> klinika, p.klinika);
  69.     }
  70.         return *this;
  71.     }
  72.     void pecati(){
  73.     cout<<id<<" - "<<dijagnoza<<endl;}
  74.     ~Pacient(){delete [] dijagnoza;}
  75.     int getID(){        return this -> id;}
  76. };
  77.  
  78. class Bolnica{
  79. char ime[30];
  80. Pacient pacienti[100];
  81. int broj;
  82. public:
  83.     Bolnica(){}
  84.     Bolnica(const char* ime = " "){
  85.     strcpy(this -> ime, ime);
  86.     broj = 0;}
  87.     int getBroj(){return this -> broj;}
  88.     Bolnica & dodadiPacient(Pacient p){
  89.         ++broj;
  90.         Bolnica & dodadiPacient(Pacient p){
  91.         for(int i = 0; i < broj+1; i++){
  92.             if(broj +1<100&&pacienti[i].getID()==p.getID())
  93.             {            
  94.                 return *this;
  95.             }
  96.         }
  97.         pacienti[broj++]=p;
  98.         return *this;
  99.     }
  100.    
  101.     void pecatiPacientiPoKlinika(char* k)
  102.     {
  103.         cout<<"Primeni pacienti na Klinikata za "<<k<<" se:"<<endl;
  104.         for(int i=0; i<broj; i++)
  105.         {
  106.             if(strcmp(pacienti[i].getKlin(),k)==0)
  107.             {
  108.                 pacienti[i].pecati();
  109.             }
  110.         }
  111.     }
  112.     Pacient getPacient (int i)
  113.     {
  114.         return pacienti[i];
  115.     }
  116.    
  117. };
  118. int main() {
  119.     // se testira zadacata modularno
  120.     int testCase;
  121.     cin >> testCase;
  122.  
  123.     int n, ID;
  124.     char ime[30], dijagnoza[50], klinika[30], qklinika[30];
  125.  
  126.     if(testCase == 1) {
  127.         cout << "===== Testiranje na klasata Pacient ======" << endl;
  128.         cin >> ime;
  129.         cin >> ID;
  130.         cin >> dijagnoza;
  131.         cin >> klinika;
  132.         Pacient p(ime,ID,dijagnoza,klinika);
  133.         p.pecati();
  134.     } else if(testCase == 2) {
  135.         cout << "===== Testiranje na klasata Bolnica ======" << endl;
  136.         Bolnica b("Gradska Bolnica");
  137.         cin>>n;
  138.         for (int i=0; i<n; i++) {
  139.             cin >> ime;
  140.             cin >> ID;
  141.             cin >> dijagnoza;
  142.             cin >> klinika;
  143.             Pacient p(ime,ID,dijagnoza,klinika);
  144.             b.dodadiPacient(p);
  145.         }
  146.         for (int i=0; i<n; i++)
  147.             (b.getPacient(i)).pecati();
  148.     } else if(testCase == 3) {
  149.         cout << "===== Testiranje na metodot dodadiPacient() od klasata Bolnica ======" << endl;
  150.         Bolnica b("Gradska Bolnica");
  151.         cin>>n;
  152.         for (int i=0; i<n; i++) {
  153.             cin >> ime;
  154.             cin >> ID;
  155.             cin >> dijagnoza;
  156.             cin >> klinika;
  157.             Pacient p(ime,ID,dijagnoza,klinika);
  158.             b.dodadiPacient(p);
  159.         }
  160.         for (int i=0; i<b.getBroj(); i++)
  161.             (b.getPacient(i)).pecati();
  162.     } else if(testCase == 4) {
  163.         cout << "===== Testiranje na metodot pecatiPacientiPoKlinika() od klasata Bolnica ======" << endl;
  164.         Bolnica b("Gradska Bolnica");
  165.         cin>>n;
  166.         for (int i=0; i<n; i++) {
  167.             cin >> ime;
  168.             cin >> ID;
  169.             cin >> dijagnoza;
  170.             cin >> klinika;
  171.             Pacient p(ime,ID,dijagnoza,klinika);
  172.             b.dodadiPacient(p);
  173.         }
  174.         cin>>qklinika;
  175.         b.pecatiPacientiPoKlinika(qklinika);
  176.  
  177.     }
  178.  
  179.     return 0;
  180. }
Add Comment
Please, Sign In to add comment