Advertisement
HeatPulse

Demonstrator 1

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