Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct Datum
- {
- int Dan, Mjesec, Godina;
- };
- void Unos(Datum *datum)
- {
- cout << "Unesi dan, mjesec i godinu: ";
- cin >> datum->Dan >> datum->Mjesec >> datum->Godina;
- }
- void Ispis(Datum datum)
- {
- cout << "Dan / Mjesec / Godina" << endl;
- cout << datum.Dan << "/" << datum.Mjesec << "/" << datum.Godina << endl;
- }
- struct PolozeniPredmet
- {
- char Naziv[30];
- int Ects;
- int Ocjena;
- Datum DatumPolaganja;
- };
- void Unos(PolozeniPredmet *polozeniPredmet)
- {
- cin.ignore();
- cout << "Unesi naziv predmeta: ";
- cin.getline(polozeniPredmet->Naziv, 29);
- cout << "Unesi broj ECTS bodova: ";
- cin >> polozeniPredmet->Ects;
- cout << "Unesi ocjenu: ";
- cin >> polozeniPredmet->Ocjena;
- cout << "Unesi datum polaganja: ";
- Unos(&polozeniPredmet->DatumPolaganja);
- }
- void Ispis(PolozeniPredmet polozeniPredmet)
- {
- cout << "Naziv polozenog predmeta je : " << polozeniPredmet.Naziv << endl;
- cout << "Broj ECTS bodova: " << polozeniPredmet.Ects << endl;
- cout << "Ocjena je : " << polozeniPredmet.Ocjena << endl;
- cout << "Datum polaganja je : ";
- Ispis(polozeniPredmet.DatumPolaganja);
- }
- struct Student
- {
- char ImePrezime[30];
- char BrojIndeksa[15];
- int GodinaStudija;
- PolozeniPredmet PolozeniPredmeti[30];
- int BrojacPolozenih;
- };
- void Unos(Student *student)
- {
- cin.ignore();
- cout << "Unesi ime i prezime studenta: ";
- cin.getline(student->ImePrezime, 29);
- cout << "Unesi broj indeksa: ";
- cin.getline(student->BrojIndeksa, 14);
- cout << "Unesi godinu studija: ";
- cin >> student->GodinaStudija;
- student->BrojacPolozenih = 0;
- }
- void Ispis(Student student)
- {
- cout << "Ime i prezime: " << student.ImePrezime << endl;
- cout << "Broj indeksa : " << student.BrojIndeksa << endl;
- cout << "Godina studija: " << student.GodinaStudija << endl;
- for (int i = 0; i < student.BrojacPolozenih; i++) {
- Ispis(student.PolozeniPredmeti[i]);
- cout << "_____________________________________ " << endl;
- }
- }
- Student *GetPokazivac(Student *pok, int velicina, char trazeniIndeks[])
- {
- for (int i = 0; i < velicina; i++)
- {
- if (strcmp(pok[i].BrojIndeksa, trazeniIndeks) == 0) {
- return &pok[i];
- }
- }
- return NULL;
- }
- void Pretraga(Student *pok, int velicina)
- {
- char PojamPretrage[30];
- cin.ignore();
- cout << "Unesi pojam pretrage: ";
- cin.getline(PojamPretrage, 29);
- bool pronadjen = false;
- for (int i = 0; i < velicina; i++) {
- if (strstr(pok[i].ImePrezime, PojamPretrage) != NULL);
- {
- Ispis(pok[i]);
- pronadjen = true;
- }
- }
- if (pronadjen == false) {
- cout << "Nema rezultata pretrage." << endl;
- }
- }
- bool DodajPolozeni(Student *student, PolozeniPredmet polozeniPredmet)
- {
- if (student->BrojacPolozenih == 30) {
- return false;
- }
- for (int i = 0; i < student->BrojacPolozenih; i++) {
- if (strcmp(polozeniPredmet.Naziv, student->PolozeniPredmeti[i].Naziv) == 0) {
- if (polozeniPredmet.Ocjena > student->PolozeniPredmeti[i].Ocjena) {
- student->PolozeniPredmeti[student->BrojacPolozenih] = polozeniPredmet;
- student->BrojacPolozenih++;
- return true;
- }
- return false;
- }
- }
- student->PolozeniPredmeti[student->BrojacPolozenih] = polozeniPredmet;
- student->BrojacPolozenih++;
- return true;
- }
- Student *GetNajbolji(Student *niz, int brojac, char NazivPredmeta[], Student *najbolji = NULL)
- {
- //Funkcija treba rekurzijom vratiti studenta koji ima najvecu
- //ocjenu na primljenom predmetu.
- //U slucaju da ne postoji student koji je polozio primljeni predmet
- //funkcija vraca NULL.
- if (brojac < 0) {
- return najbolji;
- }
- for (size_t i = 0; i < niz[brojac].BrojacPolozenih; i++)
- {
- if (strcmp(NazivPredmeta, niz[brojac].PolozeniPredmeti[i].Naziv) == 0) {
- if (najbolji == NULL) {
- najbolji = &niz[brojac];
- }
- else {
- for (size_t j = 0; j < najbolji->BrojacPolozenih; j++)
- {
- if (strcmp(NazivPredmeta, najbolji->PolozeniPredmeti[j].Naziv) == 0) {
- if (niz[brojac].PolozeniPredmeti[i].Ocjena > najbolji->PolozeniPredmeti[j].Ocjena) {
- najbolji = &niz[brojac];
- }
- }
- }
- }
- return GetNajbolji(niz, brojac - 1, NazivPredmeta, najbolji);
- }
- void main()
- {
- int velicina;
- cout << "Unesi broj studenata: ";
- cin >> velicina;
- Student * niz = new Student[velicina];
- for (size_t i = 0; i < velicina; i++)
- {
- Unos(&niz[i]);
- }
- PolozeniPredmet predmet1, predmet2;
- Unos(&predmet1);
- Unos(&predmet2);
- //2 studenta kreirati
- DodajPolozeni(&niz[0], predmet1);
- DodajPolozeni(&niz[1], predmet2);
- for (size_t i = 0; i < velicina; i++)
- {
- Ispis(niz[i]);
- }
- Student * pokazivac = GetPokazivac(niz, velicina, "IB160143");
- if (pokazivac != NULL) {
- cout << ":: STUDENT PRONADJEN:: " << endl;
- Ispis(*pokazivac);
- }
- else
- {
- cout << ":: STUDENT NIJE PRONADJEN :: " << endl;
- }
- Pretraga(pokazivac, velicina);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement