Advertisement
HeatPulse

Student

May 19th, 2019
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.53 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement