Advertisement
borisdexter

Objektno 2 chas

Jan 17th, 2020
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 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. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement