Advertisement
Guest User

Untitled

a guest
Jun 30th, 2015
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.66 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. enum godinaStudija{ PRVA = 1, DRUGA, TRECA, CETVRTA };
  4. enum nacinStudiranja{ DL, REDOVAN };
  5.  
  6. char crt[] = "\n=======================================================\n";
  7. struct Predmet{
  8.     char * _naziv;
  9.     int * _ocjena;
  10.     godinaStudija * _godina;
  11.     void unos(char * naziv, int ocjena, godinaStudija g){
  12.         _naziv = new char[strlen(naziv) + 1];
  13.         strcpy_s(_naziv, strlen(naziv) + 1, naziv);
  14.         _ocjena = new int;
  15.         *_ocjena = ocjena;
  16.         _godina = new godinaStudija;
  17.         *_godina = g;
  18.     }
  19.  
  20.     void ispis(){
  21.         cout << "Naziv predmeta: " << _naziv << endl;
  22.         cout << "Ocjena: " << *_ocjena << endl;
  23.         cout << "Godina studija" << (godinaStudija(*_godina)) << endl;
  24.     }
  25.     void dealociraj(){
  26.         delete[] _naziv;
  27.         delete _ocjena;
  28.         delete _godina;
  29.         _naziv = nullptr;
  30.         _ocjena = nullptr;
  31.         _godina = nullptr;
  32.     }
  33.  
  34. };
  35. struct Student{
  36.     int * _brojIndeksa;
  37.     char * _imePrezime;
  38.     nacinStudiranja _nacin;
  39.     godinaStudija _godina;
  40.     Predmet * _polozeni;
  41.     int * _brojPolozenih;
  42.     void Unos(){
  43.         int unos;
  44.         char temp[30];
  45.         cout << "Unesite broj indeksa: ";
  46.         cin >> unos;
  47.         cin.ignore();
  48.         _brojIndeksa = new int;
  49.         *_brojIndeksa = unos;
  50.         cout << "Unesite ime i prezime: ";
  51.         cin.getline(temp, 30);
  52.         int velicina = strlen(temp) + 1;
  53.         _imePrezime = new char[velicina];
  54.         strcpy_s(_imePrezime, velicina, temp);
  55.         cout << "Unesite nacin studiranja: " << endl;
  56.         do
  57.         {
  58.             cout << "1. DL." << endl;
  59.             cout << "2. Redovan" << endl;
  60.             cout << "Unesite vas izbor: ";
  61.             cin >> unos;
  62.         } while (unos<1 || unos>2);
  63.         cin.ignore();
  64.         _nacin = (nacinStudiranja)unos;
  65.         cout << "Unesite godinu studija(1-4): ";
  66.         do
  67.         {
  68.             cin >> unos;
  69.         } while (unos<1 || unos>4);
  70.         cin.ignore();
  71.         _godina = (godinaStudija)unos;
  72.         _brojPolozenih = new int;
  73.         (*_brojPolozenih) = 0;
  74.         _polozeni = nullptr;
  75.     }
  76.     bool dodajPolozeni(Predmet * p){
  77.         (*_brojPolozenih)++;
  78.         Predmet * temp = new Predmet[*_brojPolozenih];
  79.         for (int i = 0; i < ((*_brojPolozenih) - 1); i++)
  80.         {
  81.             temp[i].unos(_polozeni[i]._naziv, *_polozeni[i]._ocjena, *_polozeni[i]._godina);
  82.  
  83.         }
  84.         temp[((*_brojPolozenih) - 1)].unos(p->_naziv, *p->_ocjena, *p->_godina);
  85.         for (int i = 0; i < (*_brojPolozenih-1); i++)
  86.         {
  87.             _polozeni[i].dealociraj();
  88.    
  89.         }
  90.         delete[]_polozeni;
  91.         _polozeni = temp;
  92.         return true;
  93.     }
  94.     void dealociraj(){
  95.         delete _brojIndeksa;
  96.         _brojIndeksa = nullptr;
  97.         delete[]_imePrezime;
  98.         _imePrezime = nullptr;
  99.         for (int i = 0; i < *_brojPolozenih; i++)
  100.         {
  101.             _polozeni[i].dealociraj();
  102.         }
  103.         delete[]_polozeni;
  104.         _polozeni = nullptr;
  105.         delete _brojPolozenih;
  106.         _brojPolozenih = nullptr;
  107.     }
  108.  
  109.     void prekopiraj(Predmet * p,int temp){
  110.         for (int i = temp; i <*_brojPolozenih ; i++)
  111.         {
  112.             strcpy_s(p[i]._naziv, strlen(p[i]._naziv), p[++i]._naziv);
  113.             p[i]._godina = p[++i]._godina;
  114.             p[i]._ocjena = p[++i]._ocjena;
  115.  
  116.         }
  117.         *_brojPolozenih--;
  118.     }
  119.     bool ukloniPolozeni(char * naziv, godinaStudija * godina){
  120.         if (*_brojPolozenih == 0)
  121.             return false;
  122.         for (int i = 0; i < *_brojPolozenih; i++)
  123.         {
  124.             if ((strcmp(_polozeni[i]._naziv, naziv) == 0) && _polozeni[i]._godina == godina){
  125.                 prekopiraj(&_polozeni[i], i);
  126.                 i = *_brojPolozenih;
  127.                 return true;
  128.             }
  129.         }
  130.         return false;
  131.     }
  132.     void Ispis(){
  133.         cout << "Podaci o studentu: " << endl;
  134.         cout << "Ime i prezime: " << _imePrezime << endl;
  135.         cout << "Broj indeksa: " << *_brojIndeksa << endl;
  136.         cout << "Nacin studiranja: " << nacinStudiranja(_nacin) << endl;
  137.         cout << "Godina studija: " << godinaStudija(_godina) << endl;
  138.         cout << "Informacije o polozenim predmetima: " << endl;
  139.         if (*_brojPolozenih != 0){
  140.             for (int i = 0; i < *_brojPolozenih; i++)
  141.             {
  142.                 cout << crt;
  143.                 _polozeni[i].ispis();
  144.                 cout << crt;
  145.             }
  146.         }
  147.     }
  148.  
  149. };
  150.  
  151.  
  152.  
  153. void main(){
  154.     int brojStudenata;
  155.     /*char znak;
  156.     int broj;
  157.     godinaStudija  g;*/
  158.     Predmet p;
  159.     int unos, temp2;
  160.     char temp[30];
  161.     godinaStudija temp3;
  162.  
  163.    
  164.     cout << "Koliko objekata tipa student zelite unijeti?: ";
  165.     cin >> brojStudenata;
  166.     cin.ignore();
  167.     Student * niz = new Student[brojStudenata];
  168.     for (int i = 0; i < brojStudenata; i++)
  169.     {
  170.         cout << "Unos podataka za studenta " << i + 1 << endl;
  171.         niz[i].Unos();
  172.     }
  173.         cout << "Podaci za predmet " << endl;
  174.         cout << "Unesite naziv predmeta: ";
  175.         cin.getline(temp, 30);
  176.         cout << "Unesite ocjenu: ";
  177.         do
  178.         {
  179.             cin >> unos;
  180.         } while (unos<5 || unos>10);
  181.         cout << "Unesite godinu studija: ";
  182.         do
  183.         {
  184.             cin >> temp2;
  185.         } while (temp2<1 || temp2>4);
  186.         cin.ignore();
  187.         temp3 = (godinaStudija)temp2;
  188.         p.unos(temp, unos, temp3);
  189.         niz[0].dodajPolozeni(&p);
  190.         niz[0].Ispis();
  191.         /*do{
  192.             cout << "Zelite li dodati predmet (D/N) ";
  193.             do{
  194.                 cin >> znak;
  195.                 char toupper(znak);
  196.             } while (znak != 'D' && znak != 'N');
  197.             cin.ignore();
  198.             if (znak == 'D'){
  199.                 if (niz[i].dodajPolozeni(niz[i]._polozeni))
  200.                     cout << "Predmet je uspjesno dodan" << endl;
  201.                 else
  202.                     cout << "Predmet nije dodan" << endl;
  203.  
  204.             }
  205.         } while (znak == 'D' && *niz[i]._brojPolozenih < 40);
  206.         do{
  207.             cout << "Zelite li ukloniti predmet (D/N) ";
  208.             do{
  209.                 cin >> znak;
  210.                 toupper(znak);
  211.             } while (znak != 'D' && znak != 'N');
  212.             cin.ignore();
  213.             if (znak == 'D'){
  214.                 cout << "Unesite naziv predmeta kojeg zelite ukloniti: ";
  215.                 cin.getline(temp, 30);
  216.                 cout << "Unesite godinu studija predmeta kojeg zelite ukloniti: ";
  217.                 cin >> broj;
  218.                 cin.ignore();
  219.                 g = (godinaStudija)broj;
  220.                 niz[i].ukloniPolozeni(temp, &g);
  221.             }
  222.         } while (znak == 'D' && *niz[i]._brojPolozenih > -1);
  223.  
  224.  
  225.     }
  226.     for (int i = 0; i < brojStudenata; i++)
  227.     {
  228.         cout << crt << "\t\t:::::PODACI O STUDENTU (" << i + 1 << ") :::::" << crt;
  229.         niz[i].Ispis();
  230.        
  231.     }*/
  232.  
  233.     system("pause>null");
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement