/ Published in: C++
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> #include <cstring> typedef struct _automobil { unsigned int serijski_broj, god; char model [30], proizvodjac [30]; } automobil; #define STACK_TYPE automobil #include "stog_polje.h" #include "stog_pokazivac.h" using namespace std; #ifdef STACK_TYPE_LIST /* Ispis svih elemenata na stogu - ako je stog lista Ispisuje se samo model i godina proizvodnje. */ static inline void ispisi_sve (stog *S) { stog *C = S->next; while (C) { cout << "Model: " << C->element.model << endl << "Godina: " << C->element.god << endl << "Proizvodjac: " << C->element.proizvodjac << "\n\n"; C = C->next; } } #endif #ifdef STACK_TYPE_ARRAY static inline void ispisi_sve (stog *S) { for (int _i = MAXLENGTH - 2; _i >= S->cursor; --_i) cout << "Model: " << S->elements[_i].model << endl << "Godina: " << S->elements[_i].god << endl << "Proizvodjac: " << S->elements[_i].proizvodjac << "\n\n"; } #endif void dodaj_na_stog (unsigned int serijski_broj, unsigned int god, char model[], char proizvodjac[], stog *S) { automobil TMP; TMP.serijski_broj = serijski_broj; TMP.god = god; strcpy (TMP.model, model); strcpy (TMP.proizvodjac, proizvodjac); PushS(TMP, S); } void unos_automobila (stog *S) { unsigned int serijski_broj, god; char model[30], proizvodjac[30]; cout << "Unesite serijski broj automobila: "; cin >> serijski_broj; cout << "Unesite ime modela: "; cin.ignore(); cin.getline(model, 29); cout << "Unesite ime proizvodjaca: "; cin.getline(proizvodjac, 29); cout << "Unesite godinu proizvodnje: "; do { cin >> god; if (god < 1995 || god > 2010) cout << "Mora biti u rangu 1995-2010\nGodina proizvodnje: "; } while (god < 1995 || god > 2010); dodaj_na_stog (serijski_broj, god, model, proizvodjac, S); } void iskrcaj_2006 (stog *S) { _NEW_STACK(S_temp); InitS(S_temp); cout << "Trenutno stanje na stogu: "; ispisi_sve(S); cout << "\nIskrcavanje u auto kucu:\n"; while (!IsEmpty(S)) { automobil T = TopS(S); if (T.god > 2006 && strcmp(T.proizvodjac, "Audi")) cout << T.proizvodjac << " " << T.model << ", " << T.god << endl << T.serijski_broj << endl << "-----------------\n\n"; PushS(T, S_temp); PopS (S); } while (!IsEmpty(S_temp)) { PushS((TopS(S_temp)), S); PopS(S_temp); } delete S_temp; cout << "\nIspis stanja stoga:\n"; ispisi_sve(S); } void iskrcaj_audi (stog *S) { if (IsEmpty(S)) return; automobil T = TopS(S); PopS(S); if (strcmp(T.proizvodjac, "Audi") == 0) cout << T.proizvodjac << " " << T.model << ", " << T.god << endl << T.serijski_broj << endl << "-----------------\n\n"; iskrcaj_audi (S); PushS(T, S); } void iskrcavanje_audia (stog *S) { cout << "Stanje na stogu:\n"; ispisi_sve(S); cout << "Iskrcavanje: \n"; iskrcaj_audi(S); cout << "Stanje nakon iskrcavanja: \n"; ispisi_sve(S); } int main (void) { _NEW_STACK(S); InitS(S); int choice; do { cout << "1. Unos automobila.\n" << "2. Iskrcavanje automobila proizvedenih nakon 2006.\n" << "3. Iskrcavanje automobila marke Audi.\n" << "4. Kontrolni ispis stoga\n" << "9. Kraj rada.\n\n"; cin >> choice; switch (choice) { case 1: unos_automobila(S); break; // TODO: other cases case 2: iskrcaj_2006(S); break; case 3: iskrcavanje_audia(S); break; case 4: ispisi_sve(S) ; break; } } while (choice != 9); while (!IsEmpty(S)) PopS(S); delete S; return 0; }