Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- enum godinaStudija{ PRVA = 1, DRUGA, TRECA, CETVRTA };
- enum nacinStudiranja{ DL, REDOVAN };
- char crt[] = "\n=======================================================\n";
- 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;
- }
- void ispis(){
- cout << "Naziv predmeta: " << _naziv << endl;
- cout << "Ocjena: " << *_ocjena << endl;
- cout << "Godina studija" << (godinaStudija(*_godina)) << endl;
- }
- void dealociraj(){
- delete[] _naziv;
- delete _ocjena;
- delete _godina;
- _naziv = nullptr;
- _ocjena = nullptr;
- _godina = nullptr;
- }
- };
- struct Student{
- int * _brojIndeksa;
- char * _imePrezime;
- nacinStudiranja _nacin;
- godinaStudija _godina;
- Predmet * _polozeni;
- int * _brojPolozenih;
- void Unos(){
- int unos;
- char temp[30];
- cout << "Unesite broj indeksa: ";
- cin >> unos;
- cin.ignore();
- _brojIndeksa = new int;
- *_brojIndeksa = unos;
- cout << "Unesite ime i prezime: ";
- cin.getline(temp, 30);
- int velicina = strlen(temp) + 1;
- _imePrezime = new char[velicina];
- strcpy_s(_imePrezime, velicina, temp);
- cout << "Unesite nacin studiranja: " << endl;
- do
- {
- cout << "1. DL." << endl;
- cout << "2. Redovan" << endl;
- cout << "Unesite vas izbor: ";
- cin >> unos;
- } while (unos<1 || unos>2);
- cin.ignore();
- _nacin = (nacinStudiranja)unos;
- cout << "Unesite godinu studija(1-4): ";
- do
- {
- cin >> unos;
- } while (unos<1 || unos>4);
- cin.ignore();
- _godina = (godinaStudija)unos;
- _brojPolozenih = new int;
- (*_brojPolozenih) = 0;
- _polozeni = nullptr;
- }
- bool dodajPolozeni(Predmet * p){
- (*_brojPolozenih)++;
- Predmet * temp = new Predmet[*_brojPolozenih];
- for (int i = 0; i < ((*_brojPolozenih) - 1); i++)
- {
- temp[i].unos(_polozeni[i]._naziv, *_polozeni[i]._ocjena, *_polozeni[i]._godina);
- }
- temp[((*_brojPolozenih) - 1)].unos(p->_naziv, *p->_ocjena, *p->_godina);
- for (int i = 0; i < (*_brojPolozenih-1); i++)
- {
- _polozeni[i].dealociraj();
- }
- delete[]_polozeni;
- _polozeni = temp;
- return true;
- }
- void dealociraj(){
- delete _brojIndeksa;
- _brojIndeksa = nullptr;
- delete[]_imePrezime;
- _imePrezime = nullptr;
- for (int i = 0; i < *_brojPolozenih; i++)
- {
- _polozeni[i].dealociraj();
- }
- delete[]_polozeni;
- _polozeni = nullptr;
- delete _brojPolozenih;
- _brojPolozenih = nullptr;
- }
- void prekopiraj(Predmet * p,int temp){
- for (int i = temp; i <*_brojPolozenih ; i++)
- {
- strcpy_s(p[i]._naziv, strlen(p[i]._naziv), p[++i]._naziv);
- p[i]._godina = p[++i]._godina;
- p[i]._ocjena = p[++i]._ocjena;
- }
- *_brojPolozenih--;
- }
- bool ukloniPolozeni(char * naziv, godinaStudija * godina){
- if (*_brojPolozenih == 0)
- return false;
- for (int i = 0; i < *_brojPolozenih; i++)
- {
- if ((strcmp(_polozeni[i]._naziv, naziv) == 0) && _polozeni[i]._godina == godina){
- prekopiraj(&_polozeni[i], i);
- i = *_brojPolozenih;
- return true;
- }
- }
- return false;
- }
- void Ispis(){
- cout << "Podaci o studentu: " << endl;
- cout << "Ime i prezime: " << _imePrezime << endl;
- cout << "Broj indeksa: " << *_brojIndeksa << endl;
- cout << "Nacin studiranja: " << nacinStudiranja(_nacin) << endl;
- cout << "Godina studija: " << godinaStudija(_godina) << endl;
- cout << "Informacije o polozenim predmetima: " << endl;
- if (*_brojPolozenih != 0){
- for (int i = 0; i < *_brojPolozenih; i++)
- {
- cout << crt;
- _polozeni[i].ispis();
- cout << crt;
- }
- }
- }
- };
- void main(){
- int brojStudenata;
- /*char znak;
- int broj;
- godinaStudija g;*/
- Predmet p;
- int unos, temp2;
- char temp[30];
- godinaStudija temp3;
- cout << "Koliko objekata tipa student zelite unijeti?: ";
- cin >> brojStudenata;
- cin.ignore();
- Student * niz = new Student[brojStudenata];
- for (int i = 0; i < brojStudenata; i++)
- {
- cout << "Unos podataka za studenta " << i + 1 << endl;
- niz[i].Unos();
- }
- cout << "Podaci za predmet " << endl;
- cout << "Unesite naziv predmeta: ";
- cin.getline(temp, 30);
- cout << "Unesite ocjenu: ";
- do
- {
- cin >> unos;
- } while (unos<5 || unos>10);
- cout << "Unesite godinu studija: ";
- do
- {
- cin >> temp2;
- } while (temp2<1 || temp2>4);
- cin.ignore();
- temp3 = (godinaStudija)temp2;
- p.unos(temp, unos, temp3);
- niz[0].dodajPolozeni(&p);
- niz[0].Ispis();
- /*do{
- cout << "Zelite li dodati predmet (D/N) ";
- do{
- cin >> znak;
- char toupper(znak);
- } while (znak != 'D' && znak != 'N');
- cin.ignore();
- if (znak == 'D'){
- if (niz[i].dodajPolozeni(niz[i]._polozeni))
- cout << "Predmet je uspjesno dodan" << endl;
- else
- cout << "Predmet nije dodan" << endl;
- }
- } while (znak == 'D' && *niz[i]._brojPolozenih < 40);
- do{
- cout << "Zelite li ukloniti predmet (D/N) ";
- do{
- cin >> znak;
- toupper(znak);
- } while (znak != 'D' && znak != 'N');
- cin.ignore();
- if (znak == 'D'){
- cout << "Unesite naziv predmeta kojeg zelite ukloniti: ";
- cin.getline(temp, 30);
- cout << "Unesite godinu studija predmeta kojeg zelite ukloniti: ";
- cin >> broj;
- cin.ignore();
- g = (godinaStudija)broj;
- niz[i].ukloniPolozeni(temp, &g);
- }
- } while (znak == 'D' && *niz[i]._brojPolozenih > -1);
- }
- for (int i = 0; i < brojStudenata; i++)
- {
- cout << crt << "\t\t:::::PODACI O STUDENTU (" << i + 1 << ") :::::" << crt;
- niz[i].Ispis();
- }*/
- system("pause>null");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement