Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- struct Kategorija {
- char *oznakaKategorije;
- char *datumpolaganja;
- void Unos() {
- char temp[100];
- cout << "Unesite oznaku katerogije:";
- cin.getline(temp, 100);
- oznakaKategorije = new char[strlen(temp) + 1];
- strcpy_s(oznakaKategorije, strlen(temp) + 1, temp);
- cout << "Unesite datum polaganja:";
- cin.getline(temp, 100);
- datumpolaganja = new char[strlen(temp) + 1];
- strcpy_s(datumpolaganja, strlen(temp) + 1, temp);
- }
- void Ispis() {
- cout << "Oznaka kategorije:" << oznakaKategorije << endl;
- cout << "Datum polaganja:" << datumpolaganja << endl;
- }
- void Dealociraj() {
- delete[] oznakaKategorije; oznakaKategorije = nullptr;
- delete[]datumpolaganja; datumpolaganja = nullptr;
- }
- };
- struct Kandidat {
- char *imePrezime;
- Kategorija *polozene;
- int brPolozenih;
- void Unos() {
- cout << "Upisite ime i prezime kandidata:";
- char temp[100];
- cin.getline(temp, 100);
- imePrezime = new char[strlen(temp) + 1];
- strcpy_s(imePrezime, strlen(temp) + 1, temp);
- polozene = new Kategorija[10];
- brPolozenih = 0;
- //Unos osnovnih informacija o kandidatu
- //voditi računa o tome da kandidat može imati maksimalno 10 položenih kategorija
- //brPolozenih je brojac koji vodi evidenciju o tome koliko polozenih kategorija kandidat
- //ima trenutno
- //Npr. Maksimalno je 10 polozenih kategorija, ali kandidat može imati samo 2 položene
- }
- void Ispis() {
- //Ispis informacija o kandidatu zajedno sa polozenim kategorijama
- cout << "Ime i prezime kandidata:" << imePrezime << endl;
- cout << "Broj polozenih kategorija:" << brPolozenih << endl;
- for (int i = 0; i < brPolozenih; i++)
- {
- cout << "Kategorija:" << polozene[i].oznakaKategorije << endl;
- }
- }
- void DodajKategoriju() {
- if (brPolozenih == 10)
- cout << "Kandidat ne moze imati vise od 10 polozenih kateroija!." << endl;
- else
- {
- polozene[brPolozenih].Unos();
- brPolozenih++;
- }
- }
- void Dealociraj() {
- delete[] imePrezime; imePrezime = nullptr;
- for (int i = 0; i < brPolozenih; i++)
- {
- polozene[i].Dealociraj();
- }
- delete[]polozene; polozene = nullptr;
- }
- };
- void dodajKategorijuKandidatu(Kandidat *niz, int max) {
- for (int i = 0; i < max; i++)
- {
- cout << i + 1 << ". " << niz[i].imePrezime << endl;
- }
- cout << "Upisite redni broj kandidata kojem zelite dodati kategoriju:";
- int redni;
- cin >> redni;
- cin.ignore();
- redni--;
- niz[redni].DodajKategoriju();
- //Korisniku se izlistavaju svi kandidati
- //Zatim korisnik unosi redni broj kandidata kojem želi dodati kategoriju
- //Potom se dodjeljuje kategorija odabranom kandidatu
- }
- void PretragaPoKategorijama(Kandidat *niz, int max) {
- cout << "Unesite naziv kategorije koju pretrazujete:";
- char trazena[100];
- cin.getline(trazena, 100);
- for (int i = 0; i < max; i++)
- {
- for (int j = 0; j < niz[i].brPolozenih; j++)
- {
- if (strcmp(niz[i].polozene[j].oznakaKategorije, trazena) == 0) {
- cout << "Polozio:" << niz[i].imePrezime << endl;
- }
- }
- }
- //Traziti od korisnika da unese naziv kategorije koju pretrazuje
- //U skladu s tim ispisati koji su kandidati polozili unesenu kategoriju
- }
- void main() {
- int vel;
- cout << "Koliko kandidata zelite dodati? ";
- cin >> vel;
- cin.ignore();
- Kandidat *kandidati = new Kandidat[vel];
- for (int i = 0; i < vel; i++)
- kandidati[i].Unos();
- for (int i = 0; i < vel; i++)
- kandidati[i].Ispis();
- cout << "Koliko kategorija zelite dodati:";
- int broj;
- cin >> broj;
- for (int i = 0; i < broj; i++)
- {
- dodajKategorijuKandidatu(kandidati, vel);
- }
- PretragaPoKategorijama(kandidati, vel);
- for (int i = 0; i < vel; i++)
- kandidati[i].Dealociraj();
- delete[]kandidati;
- kandidati = nullptr;
- system("pause>0");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement