Advertisement
neogz

PR1 - 6

Sep 19th, 2014
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.28 KB | None | 0 0
  1. #ifdef _MSC_VER
  2. #define _CRT_SECURE_NO_WARNINGS
  3. #endif
  4. #include <iostream>
  5. using namespace std;
  6. char crt[] = { "\n-------------------------------------------------\n" };
  7. char crt2[] = { "-------------------------------------------------\n" };
  8.  
  9. enum GodinaStudija  { PRVA = 1, DRUGA, TRECA, CETVRTA};
  10. char * opisGodineStudija[] = { "PRVA", "DRUGA", "TRECA", "CETVRTA" };
  11. enum NacinStudiranja{ DL, REDOVAN };
  12. char *opisNacinStudiranja[] = { "DL", "REDOVAN" };
  13.  
  14. struct Predmet {
  15.     char * _naziv;
  16.     int * _ocjena;
  17.     GodinaStudija *_godina;
  18.     void Unos(char * naziv, int ocjena, GodinaStudija g){
  19.         _naziv = new char[strlen(naziv) + 1];
  20.         strcpy(_naziv, naziv);
  21.  
  22.         _ocjena = new int;
  23.         *_ocjena = ocjena;
  24.  
  25.         _godina = new GodinaStudija(g);
  26.  
  27.     }
  28.     void Ispis(){
  29.        
  30.         cout << crt2<< "Naziv predmeta: \t" << _naziv << endl;
  31.         cout << "Ocjena: \t\t" << *_ocjena << endl;
  32.         cout << "Godina studiranja: \t" << opisGodineStudija[*_godina] << crt;
  33.     }
  34.     void Dealociraj(){
  35.         delete[]_naziv;
  36.         delete _ocjena;
  37.         delete[]_godina;
  38.         _naziv = nullptr;
  39.         _ocjena = nullptr;
  40.         _godina = nullptr;
  41.     }
  42. };
  43. struct Student {
  44.     char *_imePrezime;
  45.     int *_brojIndexa;
  46.     NacinStudiranja _nacin;
  47.     GodinaStudija _godina;
  48.     Predmet * _polozenih[40];
  49.     int * _brojPolozenih;
  50.     void Unos(){
  51.         cout << crt2 << "\t::Unesite podatke o studentu::" <<crt<< "Unesite ime i prezime: \t";
  52.         char temp[30];
  53.         cin.getline(temp, 30);
  54.         _imePrezime = new char[strlen(temp) + 1];
  55.  
  56.         int index;
  57.         cout << "Unesite broj indexa: \t";
  58.         cin >> index;
  59.         _brojIndexa = new int(index);
  60.  
  61.         int nacin;
  62.         cout << "Unesite nacin studiranja: [DL-0 REDOVAN-1] ";
  63.         cin >> nacin;
  64.         _nacin = NacinStudiranja(nacin);
  65.  
  66.         int godina;
  67.         cout << "Unesite godinu studija: [PRVA-1, DRUGA-2, TRECA-3, CETVRTA-4]: ";
  68.         cin >> godina;
  69.         cin.ignore();
  70.         _godina = GodinaStudija(godina);
  71.         cout << crt2;
  72.  
  73.         _brojPolozenih = new int;
  74.         *_brojPolozenih = 0;
  75.  
  76.     }
  77.     void Ispis(){
  78.         cout << crt2 << "\t::INFORMACIJE O STUDENTU::" << crt;
  79.         cout << "Ime i prezime: \t" << _imePrezime << endl;
  80.         cout << "Broj indexa:\t" << *_brojIndexa << endl;
  81.         cout << "Nacin studiranja: \t" << opisNacinStudiranja[_nacin] << endl;
  82.         cout << "Godina studiranja: \t" << opisGodineStudija[_godina] << endl;
  83.         cout << "Polozenih predemta: \t" << *_brojPolozenih << endl;
  84.         cout << crt2;
  85.     }
  86.     bool DodajPolozeni(Predmet *p){
  87.         if (*_brojPolozenih >= 40){ cout << "GRESKA!\nPolozeni su svi predmeti." << endl; return false; }
  88.         for (int i = 0; i < *_brojPolozenih; i++){
  89.             if (strcmp(p->_naziv, _polozenih[i]->_naziv) == 0){
  90.                 cout << "Greska!!!\nPredmet je vec polozen." << endl;
  91.                 return false;
  92.             }
  93.         }
  94.         if (*p->_godina != _godina){
  95.             cout << "GRESKA!\nNe mozete polagati predmete sa drugih godina." << endl;
  96.             return false;
  97.         }
  98.  
  99.         _polozenih[*_brojPolozenih] = new Predmet;
  100.         _polozenih[*_brojPolozenih]->Unos(p->_naziv, *p->_ocjena, *p->_godina);
  101.         (*_brojPolozenih)++;
  102.  
  103.  
  104.  
  105.     }
  106.     bool UkloniPolozeni(char *naziv, GodinaStudija * godina){
  107.         int lokacija = 0;
  108.         if (*_brojPolozenih <= 0){ cout << "GRESKA!\nNema polozenih predmeta." << endl; return false; }
  109.         for (int i = 0; i < *_brojPolozenih; i++){
  110.             if (strcmp(_polozenih[i]->_naziv, naziv) == 0 && *godina == *_polozenih[i]->_godina){
  111.                 lokacija = i;
  112.                
  113.                 _polozenih[i]->Dealociraj();
  114.                 for (int j = lokacija; j < *_brojPolozenih - 1; j++){
  115.                     _polozenih[j] = _polozenih[j + 1];
  116.                 }
  117.                 cout << "Uspjesno uklonjen predmet!" << endl;
  118.             }
  119.         }
  120.  
  121.     }
  122.     float GetProsjek(GodinaStudija * godina){
  123.         float s = 0;
  124.         int brojac = 0;
  125.         for (int i = 0; i < *_brojPolozenih; i++){
  126.             if (_polozenih[i]->_godina == godina){
  127.                 s += *_polozenih[i]->_ocjena;
  128.                 brojac++;
  129.             }
  130.         }
  131.         return s / brojac;
  132.     }
  133.     void Dealociraj(){
  134.         delete[] _imePrezime;
  135.         delete _brojIndexa;
  136.         for (int i = 0; i < *_brojPolozenih; i++)
  137.             _polozenih[i]->Dealociraj();
  138.         delete[]_polozenih;
  139.         delete _brojPolozenih;
  140.     }
  141. };
  142. void PretragaPoNazivuIOcjeni(Student * pok, int max){
  143.     char naziv[25];
  144.     cout << "Unesite naslov predmeta: ";
  145.     cin.getline(naziv, 25);
  146.    
  147.     int ocjena;
  148.     cout << "Unesite ocjenu: ";
  149.     cin >> ocjena;
  150.     cin.ignore();
  151.  
  152.  
  153.     for (int i = 0; i < max; i++){
  154.         for (int j = 0; j < *pok[i]._brojPolozenih; j++){
  155.             if (*pok[i]._polozenih[j]->_ocjena > ocjena && *pok[i]._polozenih[j]->_ocjena == ocjena)
  156.                 pok[i].Ispis();
  157.         }
  158.     }
  159. }
  160. int PretragaPoGodiniIProsjeku(Student * pok, int max){
  161.     int g, brojStudenata = 0, brocjena = 0;
  162.     float prosjek;
  163.     cout << "Unesite prosjek: ";
  164.     cin >> prosjek;
  165.     cin.ignore();
  166.  
  167.     GodinaStudija godina;
  168.     cout << "Unesite godinu studija [PRVA - 1, DRUGA - 2, TRECA -3, CETVRTA -4]: ";
  169.     cin >> g;
  170.     godina = (GodinaStudija) g;
  171.  
  172.     for (int i = 0; i < max; i++){
  173.         float s = 0;
  174.         for (int j = 0; j < *pok[i]._brojPolozenih; j++){
  175.             if (*pok[i]._polozenih[j]->_godina == godina) {
  176.                 s += *pok[i]._polozenih[j]->_ocjena;
  177.                 brocjena++;
  178.             }
  179.         }
  180.         if ((s / brocjena)>prosjek)brojStudenata++;
  181.     }
  182.     return brojStudenata;
  183. }
  184. int main(){
  185.    
  186.     int studenti;
  187.     cout << "Koliko studenata zelite kreirati: ";
  188.     cin >> studenti;
  189.     cin.ignore();
  190.  
  191.     Student * niz = new Student[studenti];
  192.     for (int i = 0; i < studenti; i++){
  193.         niz[i].Unos();
  194.     }
  195.     Predmet p;
  196.     p.Unos("UPR", 10, PRVA);
  197.     niz[0].DodajPolozeni(&p);
  198.  
  199.     niz[0].Ispis();
  200.  
  201.     system("pause > null");
  202.     return 0;
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement