SHARE
TWEET

Student

HeatPulse May 19th, 2019 63 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Студент Problem 6 (0 / 0)
  2. Дадена е дел од дефиниција на класата StudentKurs. За секој студент кој слуша некој курс се чуваат информации за неговото име (низа од знаци), оценка од писмен дел (цел број) и дали студентот сака да биде испрашуван и усно (булова променлива).
  3.  
  4. Оцената за писмениот дел е вредност од 1 до МАX. MAX има почетна вредност 10 која е иста е за сите и може да се промени со соодветна функција setMAX(). (5 поени)
  5.  
  6. Кај оние студенти кои сакаат да бидат испрашувани усно и добиваат и описна оценка. Имплементирај соодветна класа StudentKursUsno во која се чуваат дополнителни информации за описна оценка на усното испрашување (динамичко алоцирана низа од знаци). Описни оценки може да бидат: odlicen, dobro, losho.... Ако описната оценка е odlicen тогаш оцената ќе биде најмногу за оценки 2 повисока од оценката од писмениот дел, ако е dobro оценката ќе биде најмногу за 1 повисока, а ако е losho за 1 пониска. Ако студентот добие некоја друга описна оценка, неговата оценка ќе остане иста со оценката од писмениот дел.
  7.  
  8. Во класите StudentKurs и StudentKursUsno треба да се имплементираат потребните конструктори, функции за поставување и преземање и деструктор. (5 поени)
  9.  
  10. За сите објекти од класите треба да се обезбедат следните функции:
  11.  
  12. преоптоварен оператор << во кој се печатат информации за студентот на курсот во формат: Ime --- ocenka (5 поени)
  13. оcenka() – ја враќа оценката на студентот на курсот (5 поени)
  14. Во класата StudentKursUsno дефинирај ја функцијата:
  15.  
  16. преоптоварен оператор += за поставување на описна оценка на студентот(5 поени)
  17. Ако се направи обид да се внесе описна оценка во која покрај букви има и други знаци треба да се фрли исклучок (објект од класата BadInputException). Фатете го исклучокот во главната функција каде што е потребно. Откако ќе го фатите отпечатете соодветна порака за грешка (Greshna opisna ocenka) и справете се со исклучокот така што тие знаци ќе отстранат од стрингот со описната оценка (ако описната оценка била dо1ba0r ќе се промени во dоbar). (10 поени)
  18.  
  19. Дадена е дел од дефиницијата на класата KursFakultet во која се чуваат информаци за името на курсот (низа од 30 знаци) и за студентите запишани на курсот (низа од 20 покажувачи кон класата StudentKurs) како и бројот на студенти запишани на курсот.
  20.  
  21. Еден студент кој запишал некој курс ќе го положи курсот ако има барем MINOCENKA. Вредноста MINOCENKA е членка на класата StudentKurs и има фиксна вредност 6 која не може да се промени. (5 поени)
  22.  
  23. Во класата KursFakultet имплементирај ги функциите:
  24.  
  25. функција pecatiStudenti() во која се печатат сите студенти кои го положиле курсот, секој во посебен ред. Претходно во првиот ред се печати: Kursot XXXXX go polozile: (5 поени).
  26.  
  27. функција postaviOpisnaOcenka(char * ime, char* opisnaOcenka) во која на студентот на курсот со даденото име му се поствува описна оценка. Ако тоа не е можно функцијата не прави ништо (15 поени).
  28.  
  29. Комплетна функционалност (5 поени)
  30.  
  31. #include<iostream>
  32. #include<string.h>
  33. using namespace std;
  34.  
  35. class StudentKurs{
  36.    protected:
  37.        char ime[30];
  38.        int ocenka;
  39.        bool daliUsno;
  40.  
  41.    public:
  42.     StudentKurs(char* ime,int finalenIspit){
  43.        strcpy(this->ime,ime);
  44.        this->ocenka=finalenIspit;
  45.        this->daliUsno=false;
  46.      }
  47.      //дополни ја класата
  48. };
  49.  
  50.  
  51. //вметни го кодот за StudentKursUsno
  52.  
  53.  
  54. class KursFakultet{
  55. private:
  56.     char naziv[30];
  57.     StudentKurs *studenti[20];
  58.     int broj;
  59.    
  60. public:
  61.     KursFakultet(char *naziv, StudentKurs** studenti,int broj ){
  62.       strcpy(this->naziv,naziv);
  63.       for (int i=0;i<broj;i++){
  64.         //ako studentot ima usno isprashuvanje
  65.         if (studenti[i]->getDaliUsno()){
  66.             this->studenti[i]=new StudentKursUsno(*dynamic_cast<StudentKursUsno*>(studenti[i]));
  67.         }
  68.         else this->studenti[i]=new StudentKurs(*studenti[i]);
  69.       }
  70.       this->broj=broj;
  71.     }
  72.     ~KursFakultet(){
  73.     for (int i=0;i<broj;i++) delete studenti[i];
  74.     }
  75.  
  76.     //дополни ја класата
  77. };
  78.  
  79. int main(){
  80.  
  81. StudentKurs **niza;
  82. int n,m,ocenka;
  83. char ime[30],opisna[10];
  84. bool daliUsno;
  85. cin>>n;
  86. niza=new StudentKurs*[n];
  87. for (int i=0;i<n;i++){
  88.    cin>>ime;
  89.    cin>>ocenka;
  90.    cin>>daliUsno;
  91.    if (!daliUsno)
  92.     niza[i]=new StudentKurs(ime,ocenka);
  93.    else
  94.     niza[i]=new StudentKursUsno(ime,ocenka);
  95. }
  96.  
  97. KursFakultet programiranje("OOP",niza,n);
  98. for (int i=0;i<n;i++) delete niza[i];
  99. delete [] niza;
  100. cin>>m;
  101.    
  102. for (int i=0;i<m;i++){
  103.    cin>>ime>>opisna;
  104.    programiranje.postaviOpisnaOcenka(ime,opisna);
  105. }
  106.  
  107. StudentKurs::setMAX(9);
  108.  
  109. programiranje.pecatiStudenti();
  110.  
  111. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top