Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<iomanip>
- #include<cmath>
- #include<assert.h>
- #include<cstring>
- #include<conio.h>
- #include<fstream>
- #include<ctime>
- using namespace std;
- int brojac = 0;
- struct Datum{
- int _dan, _mjesec, _godina;
- void Unos(int d, int m, int g)
- {
- _dan = d;
- _mjesec = m;
- _godina = g;
- }
- void Ispis()
- {
- cout << "/" << _dan;
- cout << "/" << _mjesec;
- cout << "/" << _godina;
- }
- };
- struct PolozeniPredmet{
- char *_naziv;
- Datum *_datumPolaganja;
- int _ocjena;
- bool *_priznat;
- void Unos(char *naziv, Datum d, int *ocjena, bool *priznat = false)
- {
- _naziv = new char[strlen(naziv) + 1];
- _naziv = naziv;
- _datumPolaganja = new Datum;
- *_datumPolaganja = d;
- _ocjena = *ocjena;
- _priznat = priznat;
- }
- void Ispis(){
- cout << endl;
- cout << _naziv << endl;
- cout << _ocjena << endl;
- _datumPolaganja->Ispis();
- if (_priznat)
- cout << "priznat" << endl;
- }
- void Delociraj()
- {
- delete[] _naziv;
- _naziv = NULL;
- }
- };
- struct Student{
- int _brojIndeksa;
- char *_imePrezime;
- Datum _datumRodenja;
- PolozeniPredmet *_polozeniPredmeti[40];
- int *_trenutnoPolozeni;
- void Unos(int indeks, char *imePrezime, Datum *datumRodenja, PolozeniPredmet pol){
- _trenutnoPolozeni = new int(0);
- _brojIndeksa = indeks;
- _imePrezime = new char[strlen(imePrezime) + 1];
- _imePrezime = imePrezime;
- _datumRodenja = *datumRodenja;
- _polozeniPredmeti[0] = new PolozeniPredmet;
- _polozeniPredmeti[0]->Unos(pol._naziv, *pol._datumPolaganja, &pol._ocjena);
- (*_trenutnoPolozeni)++;
- }
- void Ispis(){
- cout << _brojIndeksa << endl;
- cout << *_trenutnoPolozeni << endl;
- cout << _imePrezime << endl;
- _datumRodenja.Ispis();
- for (int i = 0; i < *_trenutnoPolozeni; i++)
- {
- _polozeniPredmeti[i]->Ispis();
- }
- }
- bool DodajPolozeni(char *naziv, Datum datum, int *ocjena)
- {
- for (int i = 0; i < *_trenutnoPolozeni; i++)
- {
- if (strcmp(_polozeniPredmeti[i]->_naziv, naziv) == 0)
- return false;
- }
- _polozeniPredmeti[*_trenutnoPolozeni] = new PolozeniPredmet();
- _polozeniPredmeti[*_trenutnoPolozeni]->Unos(naziv, datum, ocjena);
- *_trenutnoPolozeni = *_trenutnoPolozeni + 1;
- return true;
- }
- int UkloniPolozeni(Datum *datum){
- bool veci = false;
- int b2 = 0;
- for (int i = 0; i < *_trenutnoPolozeni; i++)
- {
- if (_polozeniPredmeti[i]->_datumPolaganja->_godina > datum->_godina)
- veci = true;
- else if (_polozeniPredmeti[i]->_datumPolaganja->_godina = datum->_godina)
- {
- if (_polozeniPredmeti[i]->_datumPolaganja->_mjesec > datum->_mjesec)
- veci = true;
- else if (_polozeniPredmeti[i]->_datumPolaganja->_dan > datum->_dan)
- veci = true;
- }
- if (veci && _polozeniPredmeti[i]->_priznat == false)
- {
- _polozeniPredmeti[i] = _polozeniPredmeti[i + 1];
- b2++;
- *_trenutnoPolozeni = *_trenutnoPolozeni - 1;
- }
- }
- return b2;
- }
- PolozeniPredmet *GetPolozenibyNaziv(char *naziv)
- {
- char *p = NULL;
- for (int i = 0; i < *_trenutnoPolozeni; i++)
- {
- p = strstr(_polozeniPredmeti[i]->_naziv, naziv);
- if (p != NULL)
- brojac++;
- }
- PolozeniPredmet *niz = new PolozeniPredmet[brojac];
- brojac = 0;
- for (int i = 0; i < *_trenutnoPolozeni; i++)
- {
- p = strstr(_polozeniPredmeti[i]->_naziv, naziv);
- if (p != NULL)
- niz[brojac] = *_polozeniPredmeti[i];
- brojac++;
- }
- if (brojac = 0)
- {
- return NULL;
- }
- else
- {
- return niz;
- }
- }
- };
- void main(){
- Student s1;
- Datum d1, d2;
- int ocj = 10;
- bool *pr = new bool(true);
- PolozeniPredmet p1, p2;
- d1.Unos(12, 21, 3423);
- d2.Unos(23, 45, 3456);
- p1.Unos("pr1", d1, &ocj);
- p2.Unos("r2ssss", d2, &ocj, pr);
- s1.Unos(123, "armin roksa", &d1, p1);
- if (s1.DodajPolozeni("haha", d2, &ocj))
- cout << "dodan" << endl;
- else
- cout << "nije" << endl;
- cout << "trenutnop" << *s1._trenutnoPolozeni << endl;
- s1.Ispis();
- PolozeniPredmet *p;
- p = s1.GetPolozenibyNaziv("haha");
- if (p != NULL)
- {
- cout << "ima" << endl;
- }
- else
- cout << "nema nista" << endl;
- s1.UkloniPolozeni(&d1);
- s1.Ispis();
- system("pause>0");
- }
Advertisement
Add Comment
Please, Sign In to add comment