borisdexter

Objektno 2 chas

Jan 17th, 2020
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.39 KB | None | 0 0
  1. Направи класа Студент во која ќе се чуваат информации за индекс, оценки по секој предмет (низа од броеви),колку положени предмети, име и насока на студентот. Напиши сите потребни методи, конструктори и copy.
  2. prosek() - presmetuva prosekot na eden student
  3. print() - printaj informacii za studentot vo format Ime, index, prosek, smer
  4.  
  5. Потоа направи класа Факултет што ќе чува низа од студенти и бројот на студенти запишани во тој факултет. Направи функции за
  6. printajStudenti() - printaj site studenti
  7. prvenecNaGeneracija() - student so najgolem prosek
  8. studentSoNajvekje6() - koj student ima najvekje 6ki
  9. studentSoNajvekjeOcenka(int ocenka) - student so najvekje dobieni ocenki int ocenka, ako imaat isto dobieni ocenki printaj go studentot so pogolem prosek
  10. nasokaSoNajvekjeStudenti() - koja nasoka ima najvekje studenti
  11. studentiPred2018() - printaj gi site studenti zapishani pred 2018 godina
  12. daliPostoiStudent(Student objekt) - proveri dali postoi toj student na fakultetot
  13.  
  14. #include<iostream>
  15. using namespace std;
  16. class Student{
  17. private:
  18. int index;
  19. int ocenki[5];
  20. char ime[15];
  21. char nasoka[5];
  22. public:
  23. Student(){}
  24. Student(int index,char* ime,char* nasoka,int* ocenki){
  25. this->index=index;
  26. strcpy(this->ime,ime);
  27. strcpy(this->nasoka,nasoka);
  28. for(int i=0;i<5;i++){
  29. this->ocenki[i]=ocenki[i];
  30. }
  31. }
  32. // copy constructor
  33. Student(const Student &drugStudent){
  34. this->index=drugStudent.index;
  35. strcpy(this->ime,drugStudent.ime);
  36. strcpy(this->nasoka,drugStudent.nasoka);
  37. for(int i=0;i<5;i++){
  38. this->ocenki[i]=drugStudent.ocenki[i];
  39. }
  40. }
  41.  
  42. // vrati ja ocenkata na pozicija index
  43. int getOcenki(int index){
  44. return ocenki[index];
  45. }
  46.  
  47. // gotova funkcija za broenje kolku pati ja ima int ocenka
  48. int izbrojOcenki(int ocenka){
  49. int brojac=0;
  50. for(int i=0;i<5;i++){
  51. if(ocenki[i]==ocenka){
  52. brojac++;
  53. }
  54. }
  55. return brojac;
  56. }
  57.  
  58. float prosek(){
  59. int suma=0;
  60. for(int i=0;i<5;i++){
  61. suma+=ocenki[i];
  62. }
  63. return (float)suma/5;
  64. }
  65.  
  66. int getIndex(){
  67. return index;
  68. }
  69.  
  70. char* getNasoka(){
  71. return nasoka;
  72. }
  73.  
  74. void print(){
  75. cout<<ime<<" "<<index<<" "<<prosek()<<" "<<nasoka<<endl;
  76. }
  77.  
  78. };
  79.  
  80. class Fakultet{
  81. private:
  82. int brojStudenti;
  83. // ako ne znaeme kolkava e nizata stavame *
  84. Student *niza;
  85. char ime[20];
  86. public:
  87. Fakultet(){}
  88. Fakultet(char* ime,Student *niza,int brojStudenti){
  89. strcpy(this->ime,ime);
  90. for(int i=0;i<brojStudenti;i++){
  91. // copy constructor ili operator =
  92. this->niza[i]=niza[i];
  93. }
  94. this->brojStudenti=brojStudenti;
  95. }
  96.  
  97. // print site studenti
  98. void printStudenti(){
  99. cout<<"Studenti zapishani na fakultetot "<<ime<<endl;
  100. for(int i=0;i<brojStudenti;i++){
  101. niza[i].print();
  102. }
  103. }
  104.  
  105. // student so najgolem prosek
  106. void prvenecNaGeneracija(){
  107. float maxProsek=0;
  108. int pamtiIndex;
  109. for(int i=0;i<brojStudenti;i++){
  110. if(niza[i].prosek()>maxProsek){
  111. maxProsek=niza[i].prosek();
  112. pamtiIndex=i;
  113. }
  114. }
  115. cout<<"Najgolem prosek ima studentot"<<endl;
  116. niza[pamtiIndex].print();
  117. }
  118.  
  119. // koj student ima najvekje 6ki
  120. void studentSoNajvekje6(){
  121. int broj6ki=0;
  122. int max6ki=0;
  123. int pamtiIndex;
  124. for(int i=0;i<brojStudenti;i++){
  125. broj6ki=0;
  126. for(int j=0;j<5;j++){
  127. if(niza[i].getOcenki(j)==6){
  128. broj6ki++;
  129. }
  130. }
  131. if(broj6ki>max6ki){
  132. max6ki=broj6ki;
  133. pamtiIndex=i;
  134. }
  135. }
  136. cout<<"Studentot so najvekje 6ki e"<<endl;
  137. niza[pamtiIndex].print();
  138. }
  139.  
  140. // printaj gi site studenti zapishani pred 2018
  141. void studentiPred2018(){
  142. for(int i=0;i<brojStudenti;i++){
  143. if(niza[i].getIndex()/10000<18){
  144. niza[i].print();
  145. }
  146. }
  147. }
  148.  
  149. // dali postoi student vo fakultetot
  150. int daliPostoiStudent(Student nov){
  151. for(int i=0;i<brojStudenti;i++){
  152. if(nov.getIndex()==niza[i].getIndex()){
  153. nov.print();
  154. return 1;
  155. }
  156. }
  157. return 0;
  158. }
  159.  
  160. // nasoki: pit,kni,knia,sis
  161. void nasokaSoNajvekjeStudenti(){
  162. int brojPit=0;
  163. int brojKni=0;
  164. int brojKnia=0;
  165. int brojSis=0;
  166. for(int i=0;i<brojStudenti;i++){
  167. if(strcmp("pit",niza[i].getNasoka())==0){
  168. brojPit++;
  169. }
  170. if(strcmp("kni",niza[i].getNasoka())==0){
  171. brojKni++;
  172. }
  173. if(strcmp("knia",niza[i].getNasoka())==0){
  174. brojKnia++;
  175. }
  176. if(strcmp("sis",niza[i].getNasoka())==0){
  177. brojSis++;
  178. }
  179. }
  180. if(brojPit>brojSis && brojPit>brojKni && brojPit>brojKnia){
  181. cout<<"Pit ima najvekje "<<brojPit<<endl;
  182. }
  183. }
  184.  
  185. // student so najvekje dobieni ocenki kako int ocenka
  186. void studentSoNajvekjeOcenka(int ocenka){
  187. int brojOcenka=0;
  188. int maxOcenka=0;
  189. int pamtiIndex;
  190. for(int i=0;i<brojStudenti;i++){
  191. brojOcenka=0;
  192. for(int j=0;j<5;j++){
  193. if(niza[i].getOcenki(j)==ocenka){
  194. brojOcenka++;
  195. }
  196. }
  197. if(brojOcenka>maxOcenka){
  198. maxOcenka=brojOcenka;
  199. pamtiIndex=i;
  200. }else if(brojOcenka==maxOcenka){
  201. if(niza[i].prosek()>niza[pamtiIndex].prosek()){
  202. pamtiIndex=i;
  203. }
  204. }
  205. }
  206. cout<<"Studentot so najvekje "<<ocenka<<" ocenki e"<<endl;
  207. niza[pamtiIndex].print();
  208. }
  209.  
  210. };
  211.  
  212.  
  213. int main(){
  214. int n;
  215. cout<<"Vnesi kolku studenti sakash"<<endl;
  216. cin>>n;
  217. Student nizaStudenti[n];
  218. int index;
  219. char ime[15];
  220. char nasoka[5];
  221. int ocenki[5];
  222.  
  223. for(int i=0;i<n;i++){
  224. //cout<<"Vnesi index"<<endl;
  225. cin>>index;
  226. //cout<<"Vnesi ime"<<endl;
  227. cin>>ime;
  228. //cout<<"Vnesi nasoka"<<endl;
  229. cin>>nasoka;
  230. //cout<<"Vnesi 5 ocenki"<<endl;
  231. for(int j=0;j<5;j++){
  232. cin>>ocenki[j];
  233. }
  234. nizaStudenti[i]=Student(index,ime,nasoka,ocenki);
  235. }
  236. Fakultet finki("FINKI",nizaStudenti,n);
  237. int x;
  238. cin>>x;
  239. //finki.printStudenti();
  240. //finki.prvenecNaGeneracija();
  241. //finki.studentSoNajvekje6();
  242. //finki.studentiPred2018();
  243. //finki.nasokaSoNajvekjeStudenti();
  244. finki.studentSoNajvekjeOcenka(x);
  245. return 0;
  246. }
  247. /*
  248. if(finki.daliPostoiStudent(nizaStudenti[1])){
  249. cout<<"Postoi"<<endl;
  250. }else{
  251. cout<<"Ne postoi"<<endl;
  252. }
  253. return 0;
  254. }
  255.  
  256. /*
  257. 5
  258. 171717
  259. Petar
  260. pit
  261. 6 6 6 6 6
  262. 141414
  263. Boris
  264. knia
  265. 6 7 8 9 10
  266. 161616
  267. Borjan
  268. pit
  269. 6 7 6 7 7
  270. 161615
  271. Anja
  272. pit
  273. 5 6 7 8 6
  274. 181818
  275. Ivana
  276. sis
  277. 6 7 6 7 9
  278. */
  279.  
  280. /*
  281. class Klupa{
  282. private:
  283. int nogarki;
  284. char boja[15];
  285. public:
  286. Klupa(){}
  287. Klupa(char boja[],int nogarki){
  288. strcpy(this->boja,boja);
  289. this->nogarki=nogarki;
  290. }
  291. Klupa(int nogarki,char boja[]){
  292. strcpy(this->boja,boja);
  293. this->nogarki=nogarki;
  294. }
  295. void print(){
  296. cout<<"Klupata ima "<<nogarki<<" nogarki i "<<boja<<" boja"<<endl;
  297. }
  298. };
  299. class Uchilna{
  300. private:
  301. Klupa objektKlupa;
  302. int prozori;
  303. bool televizor;
  304. char boja[15];
  305. public:
  306. Uchilna(){
  307. cout<<"Default constructor"<<endl;
  308. }
  309. Uchilna(char boja[],Klupa objektKlupa, int prozori,bool televizor){
  310. cout<<"Parameter constructor"<<endl;
  311. strcpy(this->boja,boja);
  312. this->objektKlupa=objektKlupa;
  313. this->prozori=prozori;
  314. this->televizor=televizor;
  315. }
  316. // copy constructor
  317. Uchilna(Uchilna &objekt){
  318. this->prozori=objekt.prozori;
  319. this->televizor=objekt.televizor;
  320. strcpy(this->boja,objekt.boja);
  321. this->objektKlupa=objekt.objektKlupa;
  322. }
  323.  
  324. void setBoja(char* niza){
  325. strcpy(this->boja,niza);
  326. }
  327.  
  328. char* getBoja(){
  329. return this->boja;
  330. }
  331.  
  332. void printKlupa(){
  333. objektKlupa.print();
  334. }
  335. };
  336.  
  337.  
  338.  
  339. int main(){
  340. Uchilna prva;
  341. prva.setBoja("crvena");
  342. cout<<prva.getBoja()<<endl;
  343. Klupa nekojaKlupa(4,"tirkizna");
  344. Uchilna vtora("plava",nekojaKlupa,3,true);
  345. // this == treta
  346. Uchilna treta(vtora);
  347. // samo ako imame copy constructor ke raboti
  348. //treta=vtora;
  349. treta.printKlupa();
  350. return 0;
  351. }
  352. */
Add Comment
Please, Sign In to add comment