Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- enum godinaStudija{ prva=1, druga, treca, cetvrta};
- enum nacinStudiranja{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_s(_naziv, strlen(naziv) + 1, naziv);
- _ocjena = new int;
- *_ocjena = ocjena;
- _godina = new godinaStudija;
- *_godina = g;
- cout << "PREDMET unos OK " << endl;
- }
- void ispis(){
- cout << "Naziv predmeta " << _naziv << endl;
- cout << "Ocjena " << *_ocjena << endl;
- cout << "Godina studija " << *_godina << ". " << endl;
- cout << "PREDMET ispis OK " << endl;
- }
- void dealociraj(){
- delete[]_naziv;
- delete _ocjena;
- delete _godina;
- cout << "PREDMET dealokacija OK " << endl;
- }
- };
- struct student{
- int *_brojIndeksa;
- char *_imePrezime;
- nacinStudiranja nacin;
- godinaStudija godina;
- predmet *_polozeni;
- int *_brojPolozenih;
- void unos(){
- _brojIndeksa = new int;
- cout << "Unesite broj indeksa: ";
- cin >> *_brojIndeksa;
- cin.ignore();
- char imePrezime[30];
- cout << "Unesite ime i prezime: ";
- cin.getline(imePrezime, 30);
- _imePrezime = new char[strlen(imePrezime) + 1];
- strcpy_s(_imePrezime, strlen(imePrezime) + 1, imePrezime);
- int n, g;
- cout << "Unesite nacin studiranja (0-DL, 1-RED): ";
- cin >> n;
- nacin = (nacinStudiranja)n;
- do{cout << "Unesite godinu studija: ";
- cin >> g;
- }while (g < 1 || g >4);
- godina = (godinaStudija)g;
- _brojPolozenih = new int;
- *_brojPolozenih = 0;
- _polozeni = new predmet[*_brojPolozenih];
- cout << "STUDENT unos OK " << endl;
- }
- void ispis(){
- cout << "Broj indeksa: " << *_brojIndeksa << endl;
- cout << "Ime i prezime: " << _imePrezime << endl; //OVDJE KAD DODJE PUCA
- switch(nacin){
- case 0: cout << "DL student. " << endl; break;
- case 1: cout << "REDOVAN student. " << endl; break;
- }
- cout << "Godina studiranja " << godina << ". " << endl;
- if (*_brojPolozenih > 0){
- for (int i = 0; i < *_brojPolozenih; i++){
- _polozeni[i].ispis();
- }
- }
- else{
- cout << "Student " << _imePrezime << " nema polozenih predmeta. " << endl;
- }
- cout << "STUDENT ispis OK " << endl;
- }
- bool dodajPolozeni(predmet *p){
- for (int i = 0; i < *_brojPolozenih; i++){ //ako neko ima isti naziv
- if (strcmp(_polozeni[i]._naziv, p->_naziv) == 0){
- cout << "STUDENT dodaj pol OK " << endl;
- return false;
- }
- }
- if (*p->_godina == godina){
- _polozeni[(*_brojPolozenih)++].unos(p->_naziv, *p->_ocjena, *p->_godina);
- cout << "STUDENT dodaj pol OK " << endl;
- return true;
- }
- else{
- cout << "STUDENT dodaj pol OK " << endl;
- return false;
- }
- }
- bool ukloniPolozeni(char *naziv, godinaStudija *godina){
- for (int i = 0; i < *_brojPolozenih; i++){
- if (strcmp(_polozeni[i]._naziv, naziv) == 0 && *_polozeni[i]._godina == *godina){
- _polozeni[i].dealociraj();
- for (int j = i; j < *_brojPolozenih - 1; j++){
- _polozeni[j].unos(_polozeni[j + 1]._naziv, *_polozeni[j + 1]._ocjena, *_polozeni[j + 1]._godina);
- _polozeni[j + 1].dealociraj();
- }
- *_brojPolozenih -= 1;
- cout << "STUDENT ukloni OK " << endl;
- return true;
- }
- }
- cout << "STUDENT ukloni OK " << endl;
- return false;
- }
- float getProsjek(godinaStudija *godina){
- float suma = 0; int brojac = 0;
- for (int i = 0; i < *_brojPolozenih; i++){
- if (*_polozeni[i]._godina == *godina){
- suma += *_polozeni[i]._ocjena;
- brojac++;
- }
- }
- if (suma > 0){
- return suma / brojac;
- }
- else{
- return 5.0;
- }
- }
- void dealociraj(){
- delete _brojIndeksa;
- delete[]_imePrezime;
- for (int i = 0; i < *_brojPolozenih; i++){
- _polozeni[i].dealociraj();
- }
- delete []_polozeni;
- delete _brojPolozenih;
- cout << "STUDENT dealokacija OK " << endl;
- }
- };
- void pretragaPoNazivuIOcjeni(student *pok, int max){
- char ime[30];
- int ocjena;
- cin.ignore();
- cout << "Unesite ime predmeta za pretragu: ";
- cin.getline(ime, 30);
- cin.ignore();
- cout << "Unesite ocjenu: ";
- cin >> ocjena;
- for (int i = 0; i < max; i++){
- for (int j = 0; j < *pok[i]._brojPolozenih; j++){
- if (strcmp(pok[i]._polozeni[j]._naziv, ime) == 0 && *pok[i]._polozeni[j]._ocjena > ocjena){
- cout << "Student " << pok[i]._imePrezime << " je polozio visom ocjenom od " << ocjena << " predmet " << pok[i]._polozeni[j]._naziv << endl;
- }
- }
- }
- }
- int main(){
- student alema;
- alema.unos();
- char naziv[30];
- int ocjena, pomocna;
- godinaStudija g;
- nacinStudiranja n;
- predmet x;
- float prosjek;
- int izbor;
- do{
- cout << "1- dodaj polozeni\n2- ukloni polozeni\n3- get prosjek\n4- pretraga po nazivu i ocjeni\n5- ispis\n\3\3\3 " << endl;
- cin >> izbor;
- switch (izbor){
- case 1: cin.ignore();
- cout << "Naziv predmeta: ";
- cin.getline(naziv, 30);
- cin.ignore();
- cout << "Unesi ocjenu: ";
- cin >> ocjena;
- cout << "Unesi godinu studija: ";
- cin >> pomocna;
- g = (godinaStudija)pomocna;
- x.unos(naziv, ocjena, g);
- if (alema.dodajPolozeni(&x)){
- cout << "Uspjesno dodan. " << endl;
- }
- else{ cout << "Nije dodan. " << endl; }
- break;
- case 2: cin.ignore(); cout << "Unesite naziv za uklanjanje: ";
- cin.getline(naziv, 30);
- cin.ignore();
- cout << "Unesite godinu za uklanjanje: ";
- cin >> pomocna;
- g = (godinaStudija)pomocna;
- if (alema.ukloniPolozeni(naziv, &g)){
- cout << "Uspjesno uklonjen." << endl;
- }
- else{
- cout << "Nije uklonjen. " << endl;
- }
- break;
- case 3: cout << "Unesite godinu studija za prosjecnu ocjenu: ";
- cin >> pomocna;
- g = (godinaStudija)pomocna;
- prosjek = alema.getProsjek(&g);
- cout << "Prosjek na " << g << " godini studija: " << prosjek << endl;
- break;
- case 4: pretragaPoNazivuIOcjeni(&alema, 0);
- case 5: alema.ispis();
- }
- } while (izbor >= 1 && izbor <= 5);
- alema.dealociraj();
- system("pause>0");
- }
Add Comment
Please, Sign In to add comment