developer10

Zadatak - GodinaStudija - FB - Alema Pasquale - 13-06

Jul 3rd, 2015
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. enum godinaStudija{ prva=1, druga, treca, cetvrta};
  2. enum nacinStudiranja{dl, redovan};
  3. struct predmet{
  4.     char *_naziv;
  5.     int *_ocjena;
  6.     godinaStudija *_godina;
  7.     void unos(char *naziv, int ocjena, godinaStudija g){
  8.         _naziv = new char[strlen(naziv) + 1];
  9.         strcpy_s(_naziv, strlen(naziv) + 1, naziv);
  10.         _ocjena = new int;
  11.         *_ocjena = ocjena;
  12.         _godina = new godinaStudija;
  13.         *_godina = g;
  14.         cout << "PREDMET unos OK " << endl;
  15.     }
  16.     void ispis(){
  17.         cout << "Naziv predmeta " << _naziv << endl;
  18.         cout << "Ocjena " << *_ocjena << endl;
  19.         cout << "Godina studija " << *_godina << ". " << endl;
  20.         cout << "PREDMET ispis OK " << endl;
  21.     }
  22.     void dealociraj(){
  23.         delete[]_naziv;
  24.         delete _ocjena;
  25.         delete _godina;
  26.         cout << "PREDMET dealokacija OK " << endl;
  27.     }
  28. };
  29. struct student{
  30.     int *_brojIndeksa;
  31.     char *_imePrezime;
  32.     nacinStudiranja nacin;
  33.     godinaStudija godina;
  34.     predmet *_polozeni;
  35.     int *_brojPolozenih;
  36.     void unos(){
  37.         _brojIndeksa = new int;
  38.         cout << "Unesite broj indeksa: ";
  39.         cin >> *_brojIndeksa;
  40.         cin.ignore();
  41.         char imePrezime[30];
  42.         cout << "Unesite ime i prezime: ";
  43.         cin.getline(imePrezime, 30);
  44.         _imePrezime = new char[strlen(imePrezime) + 1];
  45.         strcpy_s(_imePrezime, strlen(imePrezime) + 1, imePrezime);
  46.         int n, g;
  47.         cout << "Unesite nacin studiranja (0-DL, 1-RED): ";
  48.         cin >> n;
  49.         nacin = (nacinStudiranja)n;
  50.         do{cout << "Unesite godinu studija: ";
  51.         cin >> g;
  52.     }while (g < 1 || g >4);
  53.         godina = (godinaStudija)g;
  54.         _brojPolozenih = new int;
  55.         *_brojPolozenih = 0;
  56.         _polozeni = new predmet[*_brojPolozenih];
  57.         cout << "STUDENT unos OK " << endl;
  58.     }
  59.     void ispis(){
  60.         cout << "Broj indeksa: " << *_brojIndeksa << endl;
  61.         cout << "Ime i prezime: " << _imePrezime << endl; //OVDJE KAD DODJE PUCA
  62.         switch(nacin){
  63.         case 0: cout << "DL student. " << endl; break;
  64.         case 1: cout << "REDOVAN student. " << endl; break;
  65.         }
  66.         cout << "Godina studiranja " << godina << ". " << endl;
  67.         if (*_brojPolozenih > 0){
  68.             for (int i = 0; i < *_brojPolozenih; i++){
  69.                 _polozeni[i].ispis();
  70.             }
  71.         }
  72.         else{
  73.             cout << "Student " << _imePrezime << " nema polozenih predmeta. " << endl;
  74.         }
  75.         cout << "STUDENT ispis OK " << endl;
  76.     }
  77.     bool dodajPolozeni(predmet *p){
  78.  
  79.         for (int i = 0; i < *_brojPolozenih; i++){ //ako neko ima isti naziv
  80.             if (strcmp(_polozeni[i]._naziv, p->_naziv) == 0){
  81.                 cout << "STUDENT dodaj pol OK " << endl;
  82.                 return false;
  83.             }
  84.         }
  85.         if (*p->_godina == godina){
  86.             _polozeni[(*_brojPolozenih)++].unos(p->_naziv, *p->_ocjena, *p->_godina);
  87.             cout << "STUDENT dodaj pol OK " << endl;
  88.             return true;
  89.         }
  90.         else{
  91.             cout << "STUDENT dodaj pol OK " << endl;
  92.             return false;
  93.         }
  94.     }
  95.     bool ukloniPolozeni(char *naziv, godinaStudija *godina){
  96.  
  97.         for (int i = 0; i < *_brojPolozenih; i++){
  98.             if (strcmp(_polozeni[i]._naziv, naziv) == 0 && *_polozeni[i]._godina == *godina){
  99.                 _polozeni[i].dealociraj();
  100.                 for (int j = i; j < *_brojPolozenih - 1; j++){
  101.                     _polozeni[j].unos(_polozeni[j + 1]._naziv, *_polozeni[j + 1]._ocjena, *_polozeni[j + 1]._godina);
  102.                     _polozeni[j + 1].dealociraj();             
  103.                 }
  104.                 *_brojPolozenih -= 1;
  105.                 cout << "STUDENT ukloni OK " << endl;
  106.                 return true;
  107.             }
  108.         }
  109.         cout << "STUDENT ukloni OK " << endl;
  110.         return false;
  111.     }
  112.     float getProsjek(godinaStudija *godina){   
  113.         float suma = 0; int brojac = 0;
  114.         for (int i = 0; i < *_brojPolozenih; i++){
  115.             if (*_polozeni[i]._godina == *godina){
  116.                 suma += *_polozeni[i]._ocjena;
  117.                 brojac++;
  118.             }
  119.         }
  120.         if (suma > 0){
  121.             return suma / brojac;
  122.         }
  123.         else{
  124.             return 5.0;
  125.         }
  126.     }
  127.     void dealociraj(){
  128.         delete _brojIndeksa;
  129.         delete[]_imePrezime;
  130.         for (int i = 0; i < *_brojPolozenih; i++){
  131.             _polozeni[i].dealociraj();
  132.         }
  133.         delete []_polozeni;
  134.         delete _brojPolozenih;
  135.         cout << "STUDENT dealokacija OK " << endl;
  136.     }
  137.  
  138. };
  139. void pretragaPoNazivuIOcjeni(student *pok, int max){
  140.     char ime[30];
  141.     int ocjena;
  142.     cin.ignore();
  143.     cout << "Unesite ime predmeta za pretragu: ";
  144.     cin.getline(ime, 30);
  145.     cin.ignore();
  146.     cout << "Unesite ocjenu: ";
  147.     cin >> ocjena;
  148.     for (int i = 0; i < max; i++){
  149.         for (int j = 0; j < *pok[i]._brojPolozenih; j++){
  150.             if (strcmp(pok[i]._polozeni[j]._naziv, ime) == 0 && *pok[i]._polozeni[j]._ocjena > ocjena){
  151.                 cout << "Student " << pok[i]._imePrezime << " je polozio visom ocjenom od " << ocjena << " predmet " << pok[i]._polozeni[j]._naziv << endl;
  152.  
  153.             }
  154.  
  155.         }
  156.     }
  157. }
  158. int main(){
  159.  
  160.     student alema;
  161.     alema.unos();
  162.     char naziv[30];
  163.     int ocjena, pomocna;
  164.     godinaStudija g;
  165.     nacinStudiranja n;
  166.     predmet x;
  167.     float prosjek;
  168.     int izbor;
  169.     do{
  170.         cout << "1- dodaj polozeni\n2- ukloni polozeni\n3- get prosjek\n4- pretraga po nazivu i ocjeni\n5- ispis\n\3\3\3 " << endl;
  171.         cin >> izbor;
  172.  
  173.  
  174.     switch (izbor){
  175.  
  176.     case 1: cin.ignore();
  177.         cout << "Naziv predmeta: ";
  178.         cin.getline(naziv, 30);
  179.         cin.ignore();
  180.         cout << "Unesi ocjenu: ";
  181.         cin >> ocjena;
  182.         cout << "Unesi godinu studija: ";
  183.         cin >> pomocna;
  184.         g = (godinaStudija)pomocna;
  185.         x.unos(naziv, ocjena, g);
  186.         if (alema.dodajPolozeni(&x)){
  187.             cout << "Uspjesno dodan. " << endl;
  188.         }
  189.         else{ cout << "Nije dodan. " << endl; }
  190.         break;
  191.     case 2: cin.ignore(); cout << "Unesite naziv za uklanjanje: ";
  192.         cin.getline(naziv, 30);
  193.         cin.ignore();
  194.         cout << "Unesite godinu za uklanjanje: ";
  195.         cin >> pomocna;
  196.         g = (godinaStudija)pomocna;
  197.         if (alema.ukloniPolozeni(naziv, &g)){
  198.             cout << "Uspjesno uklonjen." << endl;
  199.         }
  200.         else{
  201.             cout << "Nije uklonjen. " << endl;
  202.         }
  203.         break;
  204.     case 3: cout << "Unesite godinu studija za prosjecnu ocjenu: ";
  205.         cin >> pomocna;
  206.         g = (godinaStudija)pomocna;
  207.         prosjek = alema.getProsjek(&g);
  208.         cout << "Prosjek na " << g << " godini studija: " << prosjek << endl;
  209.         break;
  210.     case 4: pretragaPoNazivuIOcjeni(&alema, 0);
  211.     case 5: alema.ispis();
  212.     }
  213.     } while (izbor >= 1 && izbor <= 5);
  214.  
  215.     alema.dealociraj();
  216.  
  217.     system("pause>0");
  218. }
Add Comment
Please, Sign In to add comment