Advertisement
adnanj

Zadatak studenti (bez main funkcije)

May 25th, 2014
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.76 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. enum Nacin_Studiranja{REDOVAN, DL};
  5.  
  6. struct Predmet{
  7.     char *_naziv;
  8.     int *_ocjena;
  9.     void Unos(char * _naziv, int _ocjena);
  10.     void Ispis();
  11.     void Dealociraj();
  12. };
  13.  
  14. void Predmet::Unos(char * naziv, int ocjena) {
  15.     _naziv = new char[strlen(naziv) + 1];
  16.     strcpy(_naziv, naziv);
  17.     _ocjena = new int(ocjena);
  18. }
  19.  
  20. void Predmet::Ispis() {
  21.     cout << _naziv << " | Ocjena: " << *_ocjena << endl;
  22. }
  23.  
  24. void Predmet::Dealociraj() {
  25.     delete [] _naziv;
  26.         _naziv = NULL;
  27.     delete _ocjena;
  28. }
  29.  
  30. struct Student{
  31.     char * imeprezime;
  32.     int _indeks;
  33.     int *_brojpolozenih;
  34.     Predmet *_polozeni;
  35.     Nacin_Studiranja _nacinStudiranja;
  36.  
  37.     void Unos(char * ip, int ind, Nacin_Studiranja ns);
  38.     void Ispis();
  39.     void Dealociraj();
  40.     bool AddPredmet(char * naziv, int ocjena);
  41.     bool RemovePredmet(char * _searchTerm);
  42.     float getProsjek();
  43. };
  44.  
  45. void Student::Unos(char *imePrezime, int indeks, Nacin_Studiranja nacinS) {
  46.     imeprezime = new char[strlen(imePrezime)+1];
  47.     strcpy(imeprezime, imePrezime);
  48.     _indeks = indeks;
  49.     _brojpolozenih = new int(0);
  50.     _polozeni = new Predmet[40];
  51.     _nacinStudiranja = nacinS;
  52. }
  53.  
  54. void Student::Ispis() {
  55.     cout << "Indeks: " << _indeks << endl;
  56.     cout << "Ime i prezime: " << imeprezime << endl;
  57.     cout << "Nacin studiranja: ";
  58.     if(_nacinStudiranja == REDOVAN) cout << "Redovan" << endl;
  59.     else cout << "DL" << endl;
  60.     cout << "Polozeni predmeti: ";
  61.     if(*_brojpolozenih == 0)
  62.          cout << "Student nema polozenih predmeta!" << endl;
  63.         else {
  64.             cout << endl;
  65.         for(int i = 0; i < *_brojpolozenih; i++) {
  66.              cout << i + 1 << ". predmet: ";
  67.              _polozeni[i].Ispis();
  68.          }
  69.      }
  70. }
  71.  
  72. void Student::Dealociraj() {
  73.     delete [] imeprezime;
  74.     imeprezime = NULL;
  75.     for(int i = 0; i < *_brojpolozenih; i++)
  76.          _polozeni[i].Dealociraj();
  77.     delete _brojpolozenih;
  78. }
  79.  
  80. bool Student::AddPredmet(char * naziv, int ocjena) {
  81.     if(*_brojpolozenih < 40) {
  82.        if(ocjena < 6 ||ocjena > 10)
  83.            return false;
  84.        for(int i = 0; i < *_brojpolozenih; i++)
  85.            if(strstr(_polozeni[i]._naziv, naziv))
  86.                return false;
  87.        _polozeni[*_brojpolozenih].Unos(naziv, ocjena);
  88.        (*_brojpolozenih)++;
  89.        return true;
  90.     }
  91.     else return false;
  92. }
  93.  
  94. bool Student::RemovePredmet(char * _searchTerm) {
  95.     if(*_brojpolozenih > 0) {
  96.         for(int i = 0; i < *_brojpolozenih; i++) {
  97.             if(strstr(_polozeni[i]._naziv, _searchTerm)) {
  98.                 for(int j = i; j < *_brojpolozenih - 1; j++) {
  99.                     _polozeni[j].Dealociraj();
  100.                     _polozeni[j].Unos(_polozeni[j+1]._naziv, *_polozeni[i]._ocjena);
  101.                 }
  102.                 _polozeni[*_brojpolozenih-1].Dealociraj();
  103.                 (*_brojpolozenih)--;
  104.                 return true;
  105.             }
  106.         }
  107.         return false;
  108.     }
  109.     else return false;
  110. }
  111.  
  112. float Student::getProsjek() {
  113.       float suma = 0;
  114.       for(int i = 0; i < *_brojpolozenih; i++)
  115.           suma += *_polozeni[i]._ocjena;
  116.       return suma / *_brojpolozenih;
  117. }
  118.  
  119. Student * getNajProsjek(Student *lista, int max) {
  120.     int indeksMax = 0, Max = lista[0].getProsjek();
  121.     for(int i = 1; i < max; i++) {
  122.         if(lista[i].getProsjek() > Max) {
  123.             Max = lista[i].getProsjek();
  124.             indeksMax = i;
  125.         }
  126.     }
  127.     return &lista[indeksMax];
  128. }
  129.  
  130. Student * getProsjekIznadOsam(Student *lista, int max) {
  131.        Student *novaLista = new Student[max];
  132.        int brojac = 0;
  133.        for(int i = 0; i < max; i++)
  134.            if(lista[i].getProsjek() > 8) {
  135.               novaLista[brojac] = lista[i];
  136.               brojac++;
  137.            }
  138.        return novaLista;
  139. }
  140.  
  141. Student * getStudentByPredmet(Student *lista, int max, char * _predmet) {
  142.       Student *novaLista = new Student[max];
  143.       int brojac = 0;
  144.       for(int i = 0; i < max; i++)
  145.           for(int j = 0; j < *lista[j]._brojpolozenih; j++)
  146.               if(strstr(lista[i]._polozeni[j]._naziv, _predmet)) {
  147.                  novaLista[brojac] = lista[i];
  148.                  brojac++;
  149.               }
  150.       return novaLista;
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement