Advertisement
Guest User

Untitled

a guest
May 22nd, 2015
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.55 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct Datum{
  5.     int dan;
  6.     int mjesec;
  7.     int godina;
  8.     void Unos()
  9.     {
  10.         cout << "Unesite datum" << endl;
  11.         cin >> dan >> mjesec >> godina;
  12.     }
  13.     void Unos2(int d, int m, int g){
  14.  
  15.         dan = d;
  16.         mjesec = m;
  17.         godina = g;
  18.     }
  19.     void Ispis(){
  20.  
  21.         cout << dan << "." << mjesec << "." << godina << endl;
  22.     }
  23.     bool Stariji(Datum a){
  24.  
  25.         if (a.godina < godina)
  26.             return true;
  27.         if (a.godina == godina && a.mjesec < mjesec)
  28.             return true;
  29.         if (a.godina == godina && a.mjesec == mjesec && a.dan < dan)
  30.             return true;
  31.         return false;
  32.     }
  33. };
  34.  
  35. struct PolozeniIspit{
  36.     char naziv[20];
  37.     int ocjena;
  38.     Datum *datumPolaganja;
  39.     void Unos(PolozeniIspit p) {
  40.  
  41.         strcpy_s(naziv, strlen(p.naziv)+1, p.naziv);
  42.         ocjena = p.ocjena;
  43.         datumPolaganja = new Datum;
  44.         datumPolaganja->Unos2(p.datumPolaganja->dan, p.datumPolaganja->mjesec, p.datumPolaganja->godina);
  45.     }
  46.     void Unos(char* naziv, int ocjena, Datum d) {
  47.  
  48.         strcpy_s(this->naziv, strlen(naziv)+1, naziv);
  49.         this->ocjena = ocjena;
  50.         datumPolaganja = new Datum;
  51.         datumPolaganja->Unos2(d.dan, d.mjesec, d.godina);
  52.  
  53.     }
  54.     void Ispis(){
  55.  
  56.         cout << "Naziv " << naziv << "\nOcjena " << ocjena << endl;
  57.         datumPolaganja->Ispis();
  58.     }
  59.     bool UporediOcjene(PolozeniIspit p){
  60.  
  61.         if (ocjena < p.ocjena)
  62.             return true;
  63.         return false;
  64.     }
  65.     void Dealociraj()
  66.     {
  67.         delete datumPolaganja; datumPolaganja = NULL;
  68.     }
  69. };
  70.  
  71. struct Student{
  72.     char imePrezime[40];
  73.     char brojIndeksa[20];
  74.     PolozeniIspit *polozeniIspiti;//Pokazivač na niz
  75.     int trenutnoPolozenih;
  76.     int max;
  77.     void Unos(char iP[], char indeks[], int max = 5)
  78.     {
  79.         strcpy_s(imePrezime, 40, iP);
  80.         strcpy_s(brojIndeksa, 20, indeks);
  81.         trenutnoPolozenih = 0;
  82.         this->max = max;
  83.         polozeniIspiti = new PolozeniIspit[max];
  84.     }
  85.     void Ispis() //ispises studenta, ali i sve njegove polozene ispite
  86.     {
  87.         cout << "Ime i prezime: " << imePrezime << "\nBroj indeksa: " << brojIndeksa << endl;
  88.         cout << "------------Predmeti-----------\n";
  89.         for (int i = 0; i < trenutnoPolozenih; i++)
  90.         {
  91.             polozeniIspiti[i].Ispis();
  92.         }
  93.     }
  94.     bool AddPolozeniIspit(PolozeniIspit p){//Onemogućiti korisnika da dva puta doda isti predmet
  95.         if (trenutnoPolozenih == max)
  96.             return false;
  97.         for (int i = 0; i < trenutnoPolozenih; i++)
  98.         {
  99.             if (strcmp(polozeniIspiti[i].naziv, p.naziv) == 0)
  100.                 return false;
  101.         }
  102.         polozeniIspiti[trenutnoPolozenih].Unos(p);
  103.         trenutnoPolozenih++;
  104.     }
  105.     bool RemovePolozeni(char * nazivPredmeta)//Očuvati redosljed dodanih predmeta
  106.     {
  107.         for (int i = 0; i < trenutnoPolozenih; i++)
  108.         {
  109.             if (strcmp(polozeniIspiti[i].naziv, nazivPredmeta) == 0)
  110.             {
  111.                 for (int j = i; j < trenutnoPolozenih - 1; j++)
  112.                 {
  113.                     polozeniIspiti[j].Dealociraj();
  114.                     polozeniIspiti[j].Unos(polozeniIspiti[j + 1]);
  115.                 }
  116.                 polozeniIspiti[trenutnoPolozenih - 1].Dealociraj();
  117.                 trenutnoPolozenih--;
  118.                 return true;
  119.             }
  120.         }
  121.         return false;
  122.     }
  123.     void Dealociraj()
  124.     {
  125.         for (int i = 0; i < trenutnoPolozenih; i++)
  126.         {
  127.             polozeniIspiti[i].Dealociraj();
  128.         }
  129.         delete[]polozeniIspiti;
  130.     }
  131. };
  132.  
  133. void main(){
  134.     Datum datum1;
  135.     Datum datum2;
  136.     Datum datum3;
  137.     datum1.Unos2(1, 1, 2015);
  138.     datum2.Unos2(2, 2, 2015);
  139.     datum3.Unos2(3, 3, 2015);
  140.  
  141.     PolozeniIspit ispit1;
  142.     PolozeniIspit ispit2;
  143.     PolozeniIspit ispit3;
  144.     ispit1.Unos("pr1", 10, datum1);
  145.     ispit2.Unos("pr2", 9, datum2);
  146.     ispit3.Unos("os", 6, datum3);
  147.  
  148.     Student s1;
  149.     s1.Unos("Amer Vrebac", "3152");
  150.     s1.AddPolozeniIspit(ispit1);
  151.     s1.AddPolozeniIspit(ispit2);
  152.     s1.AddPolozeniIspit(ispit3);
  153.     s1.RemovePolozeni("pr1");
  154.     s1.Ispis();
  155.     s1.Dealociraj();
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement