Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string>
- using namespace std;
- template<class T1, class T2, int max>
- class FITKolekcija
- {
- int _trenutno;
- T1 *_elementi1[max];
- T2* _elementi2[max];
- public:
- ///////////////////////////////////////////////////////////////
- ////////////////// konstruktor i destruktor //////////////////
- ///////////////////////////////////////////////////////////////
- FITKolekcija(){
- for (int i = 0; i < max; i++){
- _elementi1[i] = nullptr;
- _elementi2[i] = nullptr;
- }
- _trenutno = 0;
- }
- FITKolekcija(FITKolekcija & obj){
- _trenutno = obj._trenutno;
- for (int i = 0; i < _trenutno; i++){
- elementi1[i] = obj._elementi1[i];
- elementi2[i] = obj._elementi2[i];
- }
- }
- ~FITKolekcija(){
- for (int i = 0; i < _trenutno; i++){
- delete [] _elementi1[i];
- delete[] _elementi2[i];
- _elementi1[i] = nullptr;
- _elementi2[i] = nullptr;
- }
- }
- /////////////////////////////////////////////////////////////
- //////////////// funkcije: dodaj, ispisi
- ///////////////////////////////////////////////////////////////
- void add(T1 e1, T2 e2){
- if (_trenutno < max){
- _elementi1[_trenutno] = new T1(e1);
- _elementi2[_trenutno] = new T2(e2);
- _trenutno++;
- }
- return;
- }
- void info(){
- for (int i = 0; i < _trenutno; i++){
- cout << *_elementi1[i] << " - " << *_elementi2[i] << endl;
- }
- }
- /////////////////////////////////////////////////////////////////////////////////////////////
- ////// preklopljeni operatori: << () [] -=
- ///////////////////////////////////////////////////////////////////////////////////////////////
- /*
- void operator = ( T1 e2){
- T1 * temp = new T1(e1);
- delete[]e1;
- e1 = e2;
- delete[]e2;
- e2 = temp;
- }
- void operator = (char * e2){
- //pravimo novu kucicu temp za kopiranje
- int vel = strlen(_elementi1) + 1;
- char * temp = new char[vel];
- strcpy_s(temp, vel, e1);
- delete[]e1; // brise e1 pa cemo spremiti e2 u e1 kucicu
- int vel = strlen(e2) + 1;
- e1 = new char[vel];
- strcpy_s(e1, vel, e2);
- // e2 = temp
- e2 = temp;
- }
- */
- friend ostream & operator << <>(ostream & COUT, FITKolekcija<T1, T2, max> & obj);
- bool operator ()(T1 e1, T2 e2){
- /* // i provjera ne radi xd
- // provjera ima li e1 ili e2 u nizu već
- for (int i = 0; i < _trenutno; i++){
- if (_elementi1[i] == e1 || _elementi2[i] == e2) return false;
- }
- */
- _elementi1[_trenutno] = new T1(e1);
- _elementi2[_trenutno] = new T2(e2);
- _trenutno++;
- return true;
- }
- T1 & operator [](int pozicija){
- return *_elementi1[pozicija];
- }
- FITKolekcija & operator -= (int redniBroj){
- // uklanja elemente sa pozicijom redni broj
- delete[]_elementi1[redniBroj];
- delete[]_elementi2[redniBroj];
- for (int i= redniBroj; i < _trenutno-1; i++){
- _elementi1[i] = _elementi1[i + 1];
- _elementi2[i] = _elementi2[i + 1];
- }
- _elementi1[_trenutno] = nullptr;
- _elementi2[_trenutno] = nullptr;
- _trenutno--;
- return *this;
- }
- /*
- bool operator ()(char * e1, char * e2){
- for (int i = 0; i < _trenutno; i++){
- if (strcmp(_elementi1[i], e1) || strcmp(_elementi2[i], e2)) return false;
- }
- _elementi1[_trenutno] = new char(e1);
- _elementi2[_trenutno] = new char(e2);
- _trenutno++;
- return true;
- }
- */
- ////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////
- };
- class Anketa
- {
- char* _pitanje;
- int _trajanje; //izraženo u danima
- //Kolekcija treba da pohrani moguće odgovore na pitanja, sa pripadajućim rednim brojem
- FITKolekcija<char*, int, 8> _odgovori;
- public:
- ///////////////////////////////////////////////////////////////////////////////////////////////
- //////////////// KONSTRUKTOR I DESTRUKTOR
- ///////////////////////////////////////////////////////////////////////////////////////////////
- Anketa(){
- _pitanje = nullptr;
- _trajanje = 0;
- }
- Anketa(char * pitanje, int trajanje){
- _trajanje = trajanje;
- int vel = strlen(pitanje) + 1;
- _pitanje = new char[vel];
- strcpy_s(_pitanje, vel, pitanje);
- }
- Anketa(Anketa & obj){
- _trajanje = obj._trajanje;
- int vel = strlen(obj._pitanje) + 1;
- _pitanje = new char[vel];
- strcpy_s(_pitanje, vel, obj._pitanje);
- }
- ~Anketa(){
- delete[]_pitanje;
- _pitanje = nullptr;
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- //////////////// funkcija: dodajOdgovor | operatori: obj++ ++obj =
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- void dodajOdgovor(char * odgovor, int brojPitanja){
- _odgovori.add(odgovor, brojPitanja);
- }
- Anketa & operator = (Anketa & obj){
- _trajanje = obj._trajanje;
- delete[]_pitanje;
- int vel = strlen(obj._pitanje) + 1;
- _pitanje = new char[vel];
- strcpy_s(_pitanje, vel, obj._pitanje);
- }
- Anketa & operator ++ (){
- _trajanje++;
- return *this;
- }
- Anketa operator ++ (int){
- // obj++
- Anketa temp = *this;
- _trajanje++;
- return temp;
- }
- friend ostream & operator << (ostream & COUT, Anketa & anketa);
- };
- template<class T1, class T2, int max>
- ostream & operator << (ostream & COUT, FITKolekcija<T1,T2,max> & obj){
- for (int i = 0; i < obj._trenutno; i++){
- COUT << *obj._elementi1[i] << " - " << *obj._elementi2[i] << endl;
- }
- return COUT;
- }
- ostream & operator << (ostream & COUT, Anketa & anketa){
- COUT << "Trajanje ankete: " << anketa._trajanje << endl;
- COUT << "Anketno pitanje: " << anketa._pitanje << endl;
- COUT << "Odgovori:" << endl;
- COUT << anketa._odgovori;
- return COUT;
- }
- int main(){
- /*
- FITKolekcija<char*, char*, 100> imenikFITa;
- imenikFITa.add("Nedim Fejzic", "062 121 155");
- imenikFITa.add("Denis Music", "062 123 456");
- imenikFITa.add("Saban Saulic", "062 123 456");
- imenikFITa.add("FAJA", "062 123 456");
- imenikFITa.add("Vinarici", "062 123 456");
- imenikFITa("Citaona", "062 112 856");
- cout << imenikFITa << endl;
- imenikFITa -= 2; // uklanja pozicija 2
- cout << imenikFITa << endl;
- cout << imenikFITa[1];
- */
- Anketa anketa("Da li je ovaj program tacan?", 2);
- anketa.dodajOdgovor("DA", 1);
- anketa.dodajOdgovor("NE", 1);
- cout << anketa;
- system("pause > null");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement