Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifdef _MSC_VER
- #define _CRT_SECURE_NO_WARNINGS
- #endif
- #include <iostream>
- using namespace std;
- char crt[] = { "\n-------------------------------------------------\n" };
- char crt2[] = { "-------------------------------------------------\n" };
- enum GodinaStudija { PRVA = 1, DRUGA, TRECA, CETVRTA};
- char * opisGodineStudija[] = { "PRVA", "DRUGA", "TRECA", "CETVRTA" };
- enum NacinStudiranja{ DL, REDOVAN };
- char *opisNacinStudiranja[] = { "DL", "REDOVAN" };
- struct Predmet {
- char * _naziv;
- int * _ocjena;
- GodinaStudija *_godina;
- void Unos(char * naziv, int ocjena, GodinaStudija g){
- _naziv = new char[strlen(naziv) + 1];
- strcpy(_naziv, naziv);
- _ocjena = new int;
- *_ocjena = ocjena;
- _godina = new GodinaStudija(g);
- }
- void Ispis(){
- cout << crt2<< "Naziv predmeta: \t" << _naziv << endl;
- cout << "Ocjena: \t\t" << *_ocjena << endl;
- cout << "Godina studiranja: \t" << opisGodineStudija[*_godina] << crt;
- }
- void Dealociraj(){
- delete[]_naziv;
- delete _ocjena;
- delete[]_godina;
- _naziv = nullptr;
- _ocjena = nullptr;
- _godina = nullptr;
- }
- };
- struct Student {
- char *_imePrezime;
- int *_brojIndexa;
- NacinStudiranja _nacin;
- GodinaStudija _godina;
- Predmet * _polozenih[40];
- int * _brojPolozenih;
- void Unos(){
- cout << crt2 << "\t::Unesite podatke o studentu::" <<crt<< "Unesite ime i prezime: \t";
- char temp[30];
- cin.getline(temp, 30);
- _imePrezime = new char[strlen(temp) + 1];
- int index;
- cout << "Unesite broj indexa: \t";
- cin >> index;
- _brojIndexa = new int(index);
- int nacin;
- cout << "Unesite nacin studiranja: [DL-0 REDOVAN-1] ";
- cin >> nacin;
- _nacin = NacinStudiranja(nacin);
- int godina;
- cout << "Unesite godinu studija: [PRVA-1, DRUGA-2, TRECA-3, CETVRTA-4]: ";
- cin >> godina;
- cin.ignore();
- _godina = GodinaStudija(godina);
- cout << crt2;
- _brojPolozenih = new int;
- *_brojPolozenih = 0;
- }
- void Ispis(){
- cout << crt2 << "\t::INFORMACIJE O STUDENTU::" << crt;
- cout << "Ime i prezime: \t" << _imePrezime << endl;
- cout << "Broj indexa:\t" << *_brojIndexa << endl;
- cout << "Nacin studiranja: \t" << opisNacinStudiranja[_nacin] << endl;
- cout << "Godina studiranja: \t" << opisGodineStudija[_godina] << endl;
- cout << "Polozenih predemta: \t" << *_brojPolozenih << endl;
- cout << crt2;
- }
- bool DodajPolozeni(Predmet *p){
- if (*_brojPolozenih >= 40){ cout << "GRESKA!\nPolozeni su svi predmeti." << endl; return false; }
- for (int i = 0; i < *_brojPolozenih; i++){
- if (strcmp(p->_naziv, _polozenih[i]->_naziv) == 0){
- cout << "Greska!!!\nPredmet je vec polozen." << endl;
- return false;
- }
- }
- if (*p->_godina != _godina){
- cout << "GRESKA!\nNe mozete polagati predmete sa drugih godina." << endl;
- return false;
- }
- _polozenih[*_brojPolozenih] = new Predmet;
- _polozenih[*_brojPolozenih]->Unos(p->_naziv, *p->_ocjena, *p->_godina);
- (*_brojPolozenih)++;
- }
- bool UkloniPolozeni(char *naziv, GodinaStudija * godina){
- int lokacija = 0;
- if (*_brojPolozenih <= 0){ cout << "GRESKA!\nNema polozenih predmeta." << endl; return false; }
- for (int i = 0; i < *_brojPolozenih; i++){
- if (strcmp(_polozenih[i]->_naziv, naziv) == 0 && *godina == *_polozenih[i]->_godina){
- lokacija = i;
- _polozenih[i]->Dealociraj();
- for (int j = lokacija; j < *_brojPolozenih - 1; j++){
- _polozenih[j] = _polozenih[j + 1];
- }
- cout << "Uspjesno uklonjen predmet!" << endl;
- }
- }
- }
- float GetProsjek(GodinaStudija * godina){
- float s = 0;
- int brojac = 0;
- for (int i = 0; i < *_brojPolozenih; i++){
- if (_polozenih[i]->_godina == godina){
- s += *_polozenih[i]->_ocjena;
- brojac++;
- }
- }
- return s / brojac;
- }
- void Dealociraj(){
- delete[] _imePrezime;
- delete _brojIndexa;
- for (int i = 0; i < *_brojPolozenih; i++)
- _polozenih[i]->Dealociraj();
- delete[]_polozenih;
- delete _brojPolozenih;
- }
- };
- void PretragaPoNazivuIOcjeni(Student * pok, int max){
- char naziv[25];
- cout << "Unesite naslov predmeta: ";
- cin.getline(naziv, 25);
- int ocjena;
- cout << "Unesite ocjenu: ";
- cin >> ocjena;
- cin.ignore();
- for (int i = 0; i < max; i++){
- for (int j = 0; j < *pok[i]._brojPolozenih; j++){
- if (*pok[i]._polozenih[j]->_ocjena > ocjena && *pok[i]._polozenih[j]->_ocjena == ocjena)
- pok[i].Ispis();
- }
- }
- }
- int PretragaPoGodiniIProsjeku(Student * pok, int max){
- int g, brojStudenata = 0, brocjena = 0;
- float prosjek;
- cout << "Unesite prosjek: ";
- cin >> prosjek;
- cin.ignore();
- GodinaStudija godina;
- cout << "Unesite godinu studija [PRVA - 1, DRUGA - 2, TRECA -3, CETVRTA -4]: ";
- cin >> g;
- godina = (GodinaStudija) g;
- for (int i = 0; i < max; i++){
- float s = 0;
- for (int j = 0; j < *pok[i]._brojPolozenih; j++){
- if (*pok[i]._polozenih[j]->_godina == godina) {
- s += *pok[i]._polozenih[j]->_ocjena;
- brocjena++;
- }
- }
- if ((s / brocjena)>prosjek)brojStudenata++;
- }
- return brojStudenata;
- }
- int main(){
- int studenti;
- cout << "Koliko studenata zelite kreirati: ";
- cin >> studenti;
- cin.ignore();
- Student * niz = new Student[studenti];
- for (int i = 0; i < studenti; i++){
- niz[i].Unos();
- }
- Predmet p;
- p.Unos("UPR", 10, PRVA);
- niz[0].DodajPolozeni(&p);
- niz[0].Ispis();
- system("pause > null");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement