Advertisement
Guest User

Untitled

a guest
May 20th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.85 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4.  
  5.  
  6. class Kurs{
  7. private:
  8. char ime[20];
  9. int krediti;
  10. public:
  11. Kurs (char *ime,int krediti){
  12. strcpy(this->ime,ime);
  13. this->krediti=krediti;
  14. }
  15. Kurs (){
  16. strcpy(this->ime,"");
  17. krediti=0;
  18. }
  19. bool operator==(const char *ime) const{
  20. return strcmp(this->ime,ime)==0;
  21. }
  22. char const * getIme()const{
  23. return ime;
  24. }
  25. void pecati ()const{cout<<ime<<" "<<krediti<<"ECTS";}
  26. };
  27.  
  28. class Student{
  29. private:
  30. int *ocenki;
  31. int brojOcenki;
  32.  
  33. protected:
  34. int indeks;
  35.  
  36. public:
  37. Student(int indeks,int *ocenki, int brojOcenki){
  38. this->indeks=indeks;
  39. this->brojOcenki=brojOcenki;
  40. this->ocenki=new int[brojOcenki];
  41. for (int i=0;i<brojOcenki;i++) this->ocenki[i]=ocenki[i];
  42. }
  43. Student(const Student &k){
  44. this->indeks=k.indeks;
  45. this->brojOcenki=k.brojOcenki;
  46. this->ocenki=new int[k.brojOcenki];
  47. for (int i=0;i<k.brojOcenki;i++) this->ocenki[i]=k.ocenki[i];
  48. }
  49. Student operator=(const Student &k){
  50. if (&k==this) return *this;
  51. this->indeks=k.indeks;
  52. this->brojOcenki=k.brojOcenki;
  53. delete [] ocenki;
  54. this->ocenki=new int[k.brojOcenki];
  55. for (int i=0;i<k.brojOcenki;i++) this->ocenki[i]=k.ocenki[i];
  56. return *this;
  57. }
  58.  
  59. ~Student(){delete [] ocenki;}
  60. int getBodovi()
  61. {
  62. int brojac=0;
  63. for(int i=0;i<brojOcenki;i++)
  64. {
  65. if(ocenki[i]>5) brojac++;
  66. }
  67. return brojac/brojOcenki;
  68. }
  69. void pecati()
  70. {
  71. cout<<indeks<<endl;
  72. }
  73. };
  74.  
  75. class Predavach{
  76. private:
  77. Kurs kursevi[10];
  78. int brojKursevi;
  79.  
  80. protected:
  81. char *imeIPrezime;
  82.  
  83. public:
  84. Predavach(char *imeIPrezime,Kurs *kursevi,int brojKursevi){
  85. this->brojKursevi=brojKursevi;
  86. for (int i=0;i<brojKursevi;i++) this->kursevi[i]=kursevi[i];
  87. this->imeIPrezime=new char[strlen(imeIPrezime)+1];
  88. strcpy(this->imeIPrezime,imeIPrezime);
  89. }
  90. Predavach(const Predavach &p){
  91. this->brojKursevi=p.brojKursevi;
  92. for (int i=0;i<p.brojKursevi;i++) this->kursevi[i]=p.kursevi[i];
  93. this->imeIPrezime=new char[strlen(p.imeIPrezime)+1];
  94. strcpy(this->imeIPrezime,p.imeIPrezime);
  95. }
  96. Predavach operator=(const Predavach &p){
  97. if (this==&p) return *this;
  98. this->brojKursevi=p.brojKursevi;
  99. for (int i=0;i<p.brojKursevi;i++) this->kursevi[i]=p.kursevi[i];
  100. this->imeIPrezime=new char[strlen(p.imeIPrezime)+1];
  101. delete [] imeIPrezime;
  102. strcpy(this->imeIPrezime,p.imeIPrezime);
  103. return *this;
  104. }
  105. ~Predavach(){delete [] imeIPrezime;}
  106.  
  107. int getBrojKursevi()const {return brojKursevi;}
  108.  
  109. char * const getImeIPrezime()const {return imeIPrezime;}
  110.  
  111. Kurs operator[](int i) const {
  112. if (i<brojKursevi&&i>=0)
  113. return kursevi[i];
  114. else return Kurs();
  115. }
  116.  
  117. void pecati() const {
  118. cout<<imeIPrezime<<" (";
  119. for (int i=0;i<brojKursevi;i++){
  120. kursevi[i].pecati();
  121. if (i<brojKursevi-1) cout<<", "; else cout<<")";
  122. }
  123. }
  124. };
  125.  
  126. class Demonstrator : public Predavach , public Student{
  127. int brojCasovi;
  128. public:
  129. Demonstrator(int indeks,int *ocenki, int brojOcenki,char *imeIPrezime,Kurs *kursevi,
  130. int brojKursevi,int br):Student(indeks,ocenki,brojOcenki),Predavach(imeIPrezime,kursevi,
  131. brojKursevi)
  132. {
  133. brojCasovi=br;
  134. }
  135. int getBodovi()
  136. {
  137. int p=Student::getBodovi();
  138. p+=((20*brojCasovi)/Predavach::getBrojKursevi());
  139. if(Predavach::getBrojKursevi()==0) throw NoCourseException;
  140. return p;
  141. }
  142. void pecati()
  143. {
  144. Student::pecati();
  145. cout<<": ";
  146. Predavach::pecati();
  147. }
  148. };
  149.  
  150. class NoCourseException: public Student{
  151. private:
  152. char text[30];
  153. public:
  154. NoCourseException(){}
  155. void pecati()
  156. {
  157. cout<<"Demonstratorot so indeks "<<indeks<<" ne drzi laboratoriski vezbi"<<endl;
  158. }
  159. };
  160. Student& vratiNajdobroRangiran(Student ** studenti, int n )
  161. {
  162.  
  163. }
  164.  
  165. int main(){
  166.  
  167. Kurs kursevi[10];
  168. int indeks,brojKursevi, ocenki[20],ocenka,brojOcenki,tip,brojCasovi,krediti;
  169. char ime[20],imeIPrezime[50];
  170.  
  171. cin>>tip;
  172.  
  173. if (tip==1) //test class Demonstrator
  174. {
  175. cout<<"-----TEST Demonstrator-----"<<endl;
  176. cin>>indeks>>brojOcenki;
  177. for (int i=0;i<brojOcenki;i++){
  178. cin>>ocenka;
  179. ocenki[i]=ocenka;
  180. }
  181. cin>>imeIPrezime>>brojKursevi;
  182. for (int i=0;i<brojKursevi;i++){
  183. cin>>ime>>krediti;
  184. kursevi[i]=Kurs(ime,krediti);
  185. }
  186. cin>>brojCasovi;
  187.  
  188. Demonstrator d(indeks,ocenki,brojOcenki,imeIPrezime,kursevi,brojKursevi,brojCasovi);
  189. cout<<"Objekt od klasata Demonstrator e kreiran";
  190.  
  191. } else if (tip==2) //funkcija pecati vo Student
  192. {
  193. cout<<"-----TEST pecati-----"<<endl;
  194. cin>>indeks>>brojOcenki;
  195. for (int i=0;i<brojOcenki;i++){
  196. cin>>ocenka;
  197. ocenki[i]=ocenka;
  198. }
  199.  
  200. Student s(indeks,ocenki,brojOcenki);
  201. s.pecati();
  202.  
  203. } else if (tip==3) //funkcija getVkupnaOcenka vo Student
  204. {
  205. cout<<"-----TEST getVkupnaOcenka-----"<<endl;
  206. cin>>indeks>>brojOcenki;
  207. for (int i=0;i<brojOcenki;i++){
  208. cin>>ocenka;
  209. ocenki[i]=ocenka;
  210. }
  211. Student s(indeks,ocenki,brojOcenki);
  212. cout<<"Broj na bodovi: "<<s.getBodovi()<<endl;
  213.  
  214. } else if (tip==4) //funkcija getVkupnaOcenka vo Demonstrator
  215. {
  216. cout<<"-----TEST getVkupnaOcenka-----"<<endl;
  217. cin>>indeks>>brojOcenki;
  218. for (int i=0;i<brojOcenki;i++){
  219. cin>>ocenka;
  220. ocenki[i]=ocenka;
  221. }
  222. cin>>imeIPrezime>>brojKursevi;
  223. for (int i=0;i<brojKursevi;i++){
  224. cin>>ime>>krediti;
  225. kursevi[i]=Kurs(ime,krediti);
  226. }
  227. cin>>brojCasovi;
  228.  
  229. Demonstrator d(indeks,ocenki,brojOcenki,imeIPrezime,kursevi,brojKursevi,brojCasovi);
  230. cout<<"Broj na bodovi: "<<d.getBodovi()<<endl;
  231.  
  232. } else if (tip==5) //funkcija pecati vo Demonstrator
  233. {
  234. cout<<"-----TEST pecati -----"<<endl;
  235. cin>>indeks>>brojOcenki;
  236. for (int i=0;i<brojOcenki;i++){
  237. cin>>ocenka;
  238. ocenki[i]=ocenka;
  239. }
  240. cin>>imeIPrezime>>brojKursevi;
  241. for (int i=0;i<brojKursevi;i++){
  242. cin>>ime>>krediti;
  243. kursevi[i]=Kurs(ime,krediti);
  244. }
  245. cin>>brojCasovi;
  246.  
  247. Demonstrator d(indeks,ocenki,brojOcenki,imeIPrezime,kursevi,brojKursevi,brojCasovi);
  248. d.pecati();
  249.  
  250. } else if (tip==6) //site klasi
  251. {
  252. cout<<"-----TEST Student i Demonstrator-----"<<endl;
  253. cin>>indeks>>brojOcenki;
  254. for (int i=0;i<brojOcenki;i++){
  255. cin>>ocenka;
  256. ocenki[i]=ocenka;
  257. }
  258. cin>>imeIPrezime>>brojKursevi;
  259. for (int i=0;i<brojKursevi;i++){
  260. cin>>ime>>krediti;
  261. kursevi[i]=Kurs(ime,krediti);
  262. }
  263. cin>>brojCasovi;
  264.  
  265. Student *s=new Demonstrator(indeks,ocenki,brojOcenki,imeIPrezime,kursevi,brojKursevi,brojCasovi);
  266. s->pecati();
  267. cout<<"\nBroj na bodovi: "<<s->getBodovi()<<endl;
  268. delete s;
  269.  
  270.  
  271. } else if (tip==7) //funkcija vratiNajdobroRangiran
  272. {
  273. cout<<"-----TEST vratiNajdobroRangiran-----"<<endl;
  274. int k, opt;
  275. cin>>k;
  276. Student **studenti=new Student*[k];
  277. for (int j=0;j<k;j++){
  278. cin>>opt; //1 Student 2 Demonstrator
  279. cin>>indeks>>brojOcenki;
  280. for (int i=0;i<brojOcenki;i++)
  281. {
  282. cin>>ocenka;
  283. ocenki[i]=ocenka;
  284. }
  285. if (opt==1){
  286. studenti[j]=new Student(indeks,ocenki,brojOcenki);
  287. }else{
  288. cin>>imeIPrezime>>brojKursevi;
  289. for (int i=0;i<brojKursevi;i++){
  290. cin>>ime>>krediti;
  291. kursevi[i]=Kurs(ime,krediti);
  292. }
  293. cin>>brojCasovi;
  294. studenti[j]=new Demonstrator(indeks,ocenki,brojOcenki,imeIPrezime,kursevi,brojKursevi,brojCasovi);
  295. }
  296. }
  297. Student& najdobar=vratiNajdobroRangiran(studenti,k);
  298. cout<<"Maksimalniot broj na bodovi e:"<<najdobar.getBodovi();
  299. cout<<"\nNajdobro rangiran:";
  300. najdobar.pecati();
  301.  
  302. for (int j=0;j<k;j++) delete studenti[j];
  303. delete [] studenti;
  304. } else if (tip==8) //funkcija pecatiDemonstratoriKurs
  305. {
  306. cout<<"-----TEST pecatiDemonstratoriKurs-----"<<endl;
  307. int k, opt;
  308. cin>>k;
  309. Student **studenti=new Student*[k];
  310. for (int j=0;j<k;j++){
  311. cin>>opt; //1 Student 2 Demonstrator
  312. cin>>indeks>>brojOcenki;
  313. for (int i=0;i<brojOcenki;i++)
  314. {
  315. cin>>ocenka;
  316. ocenki[i]=ocenka;
  317. }
  318. if (opt==1){
  319. studenti[j]=new Student(indeks,ocenki,brojOcenki);
  320. }else{
  321. cin>>imeIPrezime>>brojKursevi;
  322. for (int i=0;i<brojKursevi;i++)
  323. {
  324. cin>>ime>>krediti;
  325. kursevi[i]=Kurs(ime,krediti);
  326. }
  327. cin>>brojCasovi;
  328. studenti[j]=new Demonstrator(indeks,ocenki,brojOcenki,imeIPrezime,kursevi,brojKursevi,brojCasovi);
  329. }
  330. }
  331. char kurs[20];
  332. cin>>kurs;
  333. cout<<"Demonstratori na "<<kurs<<" se:"<<endl;
  334. pecatiDemonstratoriKurs (kurs,studenti,k);
  335. for (int j=0;j<k;j++) delete studenti[j];
  336. delete [] studenti;
  337.  
  338. }
  339.  
  340.  
  341. return 0;
  342. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement