Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- enum Nacin_Studiranja{REDOVAN, DL};
- struct Predmet{
- char *_naziv;
- int *_ocjena;
- void Unos(char * _naziv, int _ocjena);
- void Ispis();
- void Dealociraj();
- };
- void Predmet::Unos(char * naziv, int ocjena) {
- _naziv = new char[strlen(naziv) + 1];
- strcpy(_naziv, naziv);
- _ocjena = new int(ocjena);
- }
- void Predmet::Ispis() {
- cout << _naziv << " | Ocjena: " << *_ocjena << endl;
- }
- void Predmet::Dealociraj() {
- delete [] _naziv;
- _naziv = NULL;
- delete _ocjena;
- }
- struct Student{
- char * imeprezime;
- int _indeks;
- int *_brojpolozenih;
- Predmet *_polozeni;
- Nacin_Studiranja _nacinStudiranja;
- void Unos(char * ip, int ind, Nacin_Studiranja ns);
- void Ispis();
- void Dealociraj();
- bool AddPredmet(char * naziv, int ocjena);
- bool RemovePredmet(char * _searchTerm);
- float getProsjek();
- };
- void Student::Unos(char *imePrezime, int indeks, Nacin_Studiranja nacinS) {
- imeprezime = new char[strlen(imePrezime)+1];
- strcpy(imeprezime, imePrezime);
- _indeks = indeks;
- _brojpolozenih = new int(0);
- _polozeni = new Predmet[40];
- _nacinStudiranja = nacinS;
- }
- void Student::Ispis() {
- cout << "Indeks: " << _indeks << endl;
- cout << "Ime i prezime: " << imeprezime << endl;
- cout << "Nacin studiranja: ";
- if(_nacinStudiranja == REDOVAN) cout << "Redovan" << endl;
- else cout << "DL" << endl;
- cout << "Polozeni predmeti: ";
- if(*_brojpolozenih == 0)
- cout << "Student nema polozenih predmeta!" << endl;
- else {
- cout << endl;
- for(int i = 0; i < *_brojpolozenih; i++) {
- cout << i + 1 << ". predmet: ";
- _polozeni[i].Ispis();
- }
- }
- }
- void Student::Dealociraj() {
- delete [] imeprezime;
- imeprezime = NULL;
- for(int i = 0; i < *_brojpolozenih; i++)
- _polozeni[i].Dealociraj();
- delete _brojpolozenih;
- }
- bool Student::AddPredmet(char * naziv, int ocjena) {
- if(*_brojpolozenih < 40) {
- if(ocjena < 6 ||ocjena > 10)
- return false;
- for(int i = 0; i < *_brojpolozenih; i++)
- if(strstr(_polozeni[i]._naziv, naziv))
- return false;
- _polozeni[*_brojpolozenih].Unos(naziv, ocjena);
- (*_brojpolozenih)++;
- return true;
- }
- else return false;
- }
- bool Student::RemovePredmet(char * _searchTerm) {
- if(*_brojpolozenih > 0) {
- for(int i = 0; i < *_brojpolozenih; i++) {
- if(strstr(_polozeni[i]._naziv, _searchTerm)) {
- for(int j = i; j < *_brojpolozenih - 1; j++) {
- _polozeni[j].Dealociraj();
- _polozeni[j].Unos(_polozeni[j+1]._naziv, *_polozeni[i]._ocjena);
- }
- _polozeni[*_brojpolozenih-1].Dealociraj();
- (*_brojpolozenih)--;
- return true;
- }
- }
- return false;
- }
- else return false;
- }
- float Student::getProsjek() {
- float suma = 0;
- for(int i = 0; i < *_brojpolozenih; i++)
- suma += *_polozeni[i]._ocjena;
- return suma / *_brojpolozenih;
- }
- Student * getNajProsjek(Student *lista, int max) {
- int indeksMax = 0, Max = lista[0].getProsjek();
- for(int i = 1; i < max; i++) {
- if(lista[i].getProsjek() > Max) {
- Max = lista[i].getProsjek();
- indeksMax = i;
- }
- }
- return &lista[indeksMax];
- }
- Student * getProsjekIznadOsam(Student *lista, int max) {
- Student *novaLista = new Student[max];
- int brojac = 0;
- for(int i = 0; i < max; i++)
- if(lista[i].getProsjek() > 8) {
- novaLista[brojac] = lista[i];
- brojac++;
- }
- return novaLista;
- }
- Student * getStudentByPredmet(Student *lista, int max, char * _predmet) {
- Student *novaLista = new Student[max];
- int brojac = 0;
- for(int i = 0; i < max; i++)
- for(int j = 0; j < *lista[j]._brojpolozenih; j++)
- if(strstr(lista[i]._polozeni[j]._naziv, _predmet)) {
- novaLista[brojac] = lista[i];
- brojac++;
- }
- return novaLista;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement