Advertisement
Guest User

Untitled

a guest
Jun 19th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.08 KB | None | 0 0
  1. #include<iostream>
  2. #include<string.h>
  3. using namespace std;
  4.  
  5. class BadInputException{};
  6.  
  7. class StudentKurs{
  8. protected:
  9. char ime[30];
  10. int ocenka;
  11. bool daliUsno;
  12. static int maks;
  13. static const int MINOCENKA=6;
  14.  
  15. public:
  16. StudentKurs(char* ime,int finalenIspit){
  17. strcpy(this->ime,ime);
  18. this->ocenka=finalenIspit;
  19. this->daliUsno=false;
  20. }
  21. //дополни ја класата
  22. StudentKurs(const StudentKurs *sk){
  23. strcpy(this->ime,sk->ime);
  24. this->ocenka=sk->ocenka;
  25. this->daliUsno=false;
  26. }
  27.  
  28. friend ostream &operator<<(ostream &out, StudentKurs &stu)
  29. {
  30. return out<<stu.ime<<" --- "<<stu.getOcenka()<<endl;
  31. }
  32.  
  33. virtual int getOcenka()
  34. {
  35. return ocenka;
  36. }
  37.  
  38. bool getDaliUsno(){return daliUsno;}
  39.  
  40. char *getIme(){return ime;}
  41.  
  42. static void setMAX(int n)
  43. {
  44. maks=n;
  45. }
  46.  
  47. ~StudentKurs(){}
  48. };
  49.  
  50. int StudentKurs::maks=10;
  51.  
  52. //вметни го кодот за StudentKursUsno
  53. class StudentKursUsno:public StudentKurs
  54. {
  55. private:
  56. char *opisnaocenka;
  57. public:
  58.  
  59. StudentKursUsno(char* ime,int finalenIspit):StudentKurs(ime, finalenIspit){
  60. opisnaocenka = new char [0];
  61. daliUsno=true;
  62.  
  63. }
  64.  
  65. StudentKursUsno &operator+=(char *novaocenka)
  66. {
  67. opisnaocenka=new char[strlen(novaocenka)+1];
  68. strcpy(opisnaocenka,novaocenka);
  69.  
  70. return *this;
  71. }
  72. friend ostream &operator<<(ostream &out, const StudentKursUsno &stu)
  73. {
  74. return out<<stu.ime<<" --- "<<stu.ocenka<<endl;
  75. }
  76.  
  77. int getOcenka()
  78. {
  79. int ocenka=StudentKurs::ocenka;
  80.  
  81. if(strcmp(opisnaocenka,"odlicen")==0)
  82. ocenka+=2;
  83. else if (strcmp(opisnaocenka,"do7br4o")==0)
  84. ocenka++;
  85. else if (strcmp(opisnaocenka,"losho")==0)
  86. ocenka--;
  87. return ocenka;
  88. }
  89. ~StudentKursUsno()
  90. {
  91. //[] delete opisnaocenka;
  92. }
  93. };
  94.  
  95. class KursFakultet{
  96. private:
  97. char naziv[30];
  98. StudentKurs *studenti[20];
  99. int broj;
  100.  
  101. public:
  102. KursFakultet(char *naziv, StudentKurs** studenti,int broj ){
  103. strcpy(this->naziv,naziv);
  104. for (int i=0;i<broj;i++){
  105. //ako studentot ima usno isprashuvanje
  106. if (studenti[i]->getDaliUsno()){
  107. this->studenti[i]=new StudentKursUsno(*dynamic_cast<StudentKursUsno*>(studenti[i]));
  108. }
  109. else this->studenti[i]=new StudentKurs(*studenti[i]);
  110. }
  111. this->broj=broj;
  112. }
  113.  
  114. ~KursFakultet(){
  115. for (int i=0;i<broj;i++) delete studenti[i];
  116. }
  117.  
  118. //дополни ја класата
  119. void pecatiStudenti()
  120. {
  121. cout<<"Kursot "<<naziv<<" go polozile:"<<endl;
  122. for(int i=0;i<broj;i++)
  123. {
  124. if(studenti[i]->getOcenka()>5)
  125. cout<<*studenti[i];
  126. }
  127. }
  128.  
  129. void postaviOpisnaOcenka(char * ime, char* opisnaOcenka) {
  130.  
  131. for(int i=0;i<broj;i++){
  132. if(strcmp(studenti[i]->getIme(),ime)==0&&studenti[i]->getDaliUsno())
  133. {
  134. StudentKursUsno *usno =dynamic_cast<StudentKursUsno *> (studenti[i]);
  135.  
  136. *usno+=opisnaOcenka;
  137. }
  138. }
  139. }
  140. };
  141.  
  142. int main(){
  143.  
  144. StudentKurs **niza;
  145. int n,m,ocenka;
  146. char ime[30],opisna[10];
  147. bool daliUsno;
  148. cin>>n;
  149. niza=new StudentKurs*[n];
  150. for (int i=0;i<n;i++){
  151. cin>>ime;
  152. cin>>ocenka;
  153. cin>>daliUsno;
  154. if (!daliUsno)
  155. niza[i]=new StudentKurs(ime,ocenka);
  156. else
  157. niza[i]=new StudentKursUsno(ime,ocenka);
  158. }
  159.  
  160. KursFakultet programiranje("OOP",niza,n);
  161. for (int i=0;i<n;i++) delete niza[i];
  162. delete [] niza;
  163. cin>>m;
  164.  
  165. for (int i=0;i<m;i++){
  166. cin>>ime>>opisna;
  167. try {
  168. for(int i=0;i<strlen(opisna);i++)
  169. if(!isalpha(opisna[i]))
  170. throw BadInputException();
  171.  
  172. }
  173.  
  174. catch (BadInputException){
  175. cout<<"Greshna opisna ocenka"<<endl;
  176.  
  177.  
  178. }
  179. programiranje.postaviOpisnaOcenka(ime,opisna);
  180. }
  181.  
  182. StudentKurs::setMAX(9);
  183.  
  184. programiranje.pecatiStudenti();
  185.  
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement