Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct Datum{
- int dan;
- int mjesec;
- int godina;
- void Unos()
- {
- cout << "Unesite datum" << endl;
- cin >> dan >> mjesec >> godina;
- }
- void Unos2(int d, int m, int g){
- dan = d;
- mjesec = m;
- godina = g;
- }
- void Ispis(){
- cout << dan << "." << mjesec << "." << godina << endl;
- }
- bool Stariji(Datum a){
- if (a.godina < godina)
- return true;
- if (a.godina == godina && a.mjesec < mjesec)
- return true;
- if (a.godina == godina && a.mjesec == mjesec && a.dan < dan)
- return true;
- return false;
- }
- };
- struct PolozeniIspit{
- char naziv[20];
- int ocjena;
- Datum *datumPolaganja;
- void Unos(PolozeniIspit p) {
- strcpy_s(naziv, strlen(p.naziv)+1, p.naziv);
- ocjena = p.ocjena;
- datumPolaganja = new Datum;
- datumPolaganja->Unos2(p.datumPolaganja->dan, p.datumPolaganja->mjesec, p.datumPolaganja->godina);
- }
- void Unos(char* naziv, int ocjena, Datum d) {
- strcpy_s(this->naziv, strlen(naziv)+1, naziv);
- this->ocjena = ocjena;
- datumPolaganja = new Datum;
- datumPolaganja->Unos2(d.dan, d.mjesec, d.godina);
- }
- void Ispis(){
- cout << "Naziv " << naziv << "\nOcjena " << ocjena << endl;
- datumPolaganja->Ispis();
- }
- bool UporediOcjene(PolozeniIspit p){
- if (ocjena < p.ocjena)
- return true;
- return false;
- }
- void Dealociraj()
- {
- delete datumPolaganja; datumPolaganja = NULL;
- }
- };
- struct Student{
- char imePrezime[40];
- char brojIndeksa[20];
- PolozeniIspit *polozeniIspiti;//Pokazivač na niz
- int trenutnoPolozenih;
- int max;
- void Unos(char iP[], char indeks[], int max = 5)
- {
- strcpy_s(imePrezime, 40, iP);
- strcpy_s(brojIndeksa, 20, indeks);
- trenutnoPolozenih = 0;
- this->max = max;
- polozeniIspiti = new PolozeniIspit[max];
- }
- void Ispis() //ispises studenta, ali i sve njegove polozene ispite
- {
- cout << "Ime i prezime: " << imePrezime << "\nBroj indeksa: " << brojIndeksa << endl;
- cout << "------------Predmeti-----------\n";
- for (int i = 0; i < trenutnoPolozenih; i++)
- {
- polozeniIspiti[i].Ispis();
- }
- }
- bool AddPolozeniIspit(PolozeniIspit p){//Onemogućiti korisnika da dva puta doda isti predmet
- if (trenutnoPolozenih == max)
- return false;
- for (int i = 0; i < trenutnoPolozenih; i++)
- {
- if (strcmp(polozeniIspiti[i].naziv, p.naziv) == 0)
- return false;
- }
- polozeniIspiti[trenutnoPolozenih].Unos(p);
- trenutnoPolozenih++;
- }
- bool RemovePolozeni(char * nazivPredmeta)//Očuvati redosljed dodanih predmeta
- {
- for (int i = 0; i < trenutnoPolozenih; i++)
- {
- if (strcmp(polozeniIspiti[i].naziv, nazivPredmeta) == 0)
- {
- for (int j = i; j < trenutnoPolozenih - 1; j++)
- {
- polozeniIspiti[j].Dealociraj();
- polozeniIspiti[j].Unos(polozeniIspiti[j + 1]);
- }
- polozeniIspiti[trenutnoPolozenih - 1].Dealociraj();
- trenutnoPolozenih--;
- return true;
- }
- }
- return false;
- }
- void Dealociraj()
- {
- for (int i = 0; i < trenutnoPolozenih; i++)
- {
- polozeniIspiti[i].Dealociraj();
- }
- delete[]polozeniIspiti;
- }
- };
- void main(){
- Datum datum1;
- Datum datum2;
- Datum datum3;
- datum1.Unos2(1, 1, 2015);
- datum2.Unos2(2, 2, 2015);
- datum3.Unos2(3, 3, 2015);
- PolozeniIspit ispit1;
- PolozeniIspit ispit2;
- PolozeniIspit ispit3;
- ispit1.Unos("pr1", 10, datum1);
- ispit2.Unos("pr2", 9, datum2);
- ispit3.Unos("os", 6, datum3);
- Student s1;
- s1.Unos("Amer Vrebac", "3152");
- s1.AddPolozeniIspit(ispit1);
- s1.AddPolozeniIspit(ispit2);
- s1.AddPolozeniIspit(ispit3);
- s1.RemovePolozeni("pr1");
- s1.Ispis();
- s1.Dealociraj();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement