/ 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;
}
Comments
 Subscribe to comments
                    Subscribe to comments
                
                