Created
November 13, 2010 00:26
-
-
Save ivpusic/674953 to your computer and use it in GitHub Desktop.
StrukturePodataka
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Datoteka zaglavlja stog_polje.h | |
struct tauto{ | |
int sb, godina; | |
char proizvodac[20], model[20]; | |
}; | |
struct stog { | |
tauto automobil[51]; | |
int cursor; | |
}; | |
tauto TopS (stog* S){ | |
return S->automobil[S->cursor+1]; | |
}; | |
void PushS (tauto x, stog* S){ | |
if(S->cursor>=0) { | |
S->automobil[S->cursor] = x; | |
S->cursor--; | |
} | |
}; | |
void PopS (stog* S) { | |
S->cursor++; | |
}; | |
stog* InitS (stog* S) { | |
S = new stog; | |
S -> cursor = 49; | |
return S; | |
}; | |
bool IsEmptyS (stog* S) { | |
if (S->cursor == 49) return 1; | |
return 0; | |
}; | |
//Datoteka zaglavlja stog_pokazivac.h | |
struct tauto { | |
int sb, godina; | |
char proizvodac[20], model[20]; | |
}; | |
struct stog{ | |
tauto automobil; | |
stog *next; | |
}; | |
tauto TopS(stog *S){ | |
return S->next->automobil; | |
}; | |
void PushS(tauto x, stog *S){ | |
stog *novi; | |
novi = new stog; | |
novi->next = S->next; | |
novi->automobil = x; | |
S->next = novi; | |
return; | |
}; | |
void PopS(stog *S){ | |
stog *novi = S->next; | |
S->next = novi->next; | |
delete novi; | |
}; | |
stog* InitS(stog *S){ | |
S = new stog; | |
S->next = NULL; | |
return S; | |
}; | |
bool IsEmptyS(stog *S){ | |
if (S->next == NULL) return true; | |
return false; | |
}; | |
//Glavni dio programa (main) | |
#include <iostream> | |
//#include "stog_polje.h" | |
#include "stog_pokazivac.h" | |
using namespace std; | |
stog *S = InitS(S); | |
void izbornik(){ | |
cout<<"0. Izlaz iz programa"<<endl; | |
cout<<"1. Dodavanja zapisa"<<endl; | |
cout<<"2. Iskrcaj svih automobila proizvedenih poslije 2006 / bez 'Audi' "<<endl; | |
cout<<"3. Ispis svih marke 'Audi' (bez obzira na god. proizvodnje)"<<endl; | |
}//fun | |
void ispis(){ | |
cout<<"Novo stanje: "<<endl<<endl; | |
tauto temp, polje[50]; | |
int kursor=0; | |
while(!IsEmptyS(S)){ | |
temp = TopS(S); | |
polje[kursor] = temp; | |
kursor++; | |
PopS(S); | |
}//while | |
cout << endl; | |
for (int i=kursor-1;i>=0;i--) { | |
cout << "Serijski broj: " << polje[i].sb << endl; | |
cout << "Proizvodac: " << polje[i].proizvodac << endl; | |
cout << "Model: " << polje[i].model << endl; | |
cout << "Godina proizvodnje: " << polje[i].godina << endl; | |
cout<<"----------------------------------"<<endl<<endl; | |
temp = polje[i]; | |
PushS(temp, S); | |
}//for(i) | |
}//fun | |
void unos() { | |
tauto novi; | |
cout << "Serijski broj: "; cin >> novi.sb; | |
cout << "Proizvodac: "; cin.ignore(); cin.getline(novi.proizvodac, 20); | |
cout << "Model: "; cin >> novi.model; | |
do { | |
cout << "Godina: "; cin >> novi.godina; | |
} while (novi.godina<1995 || novi.godina>2010); | |
PushS(novi, S); | |
cout<<"----------------------------------"<<endl<<endl; | |
}//fun | |
void iskrcaj1(){ | |
stog *P = InitS(P); | |
tauto pom; | |
while (!IsEmptyS(S)) { | |
pom=TopS(S); | |
PopS(S); | |
PushS(pom, P); | |
if(pom.godina >= 2006){ | |
if(stricmp(pom.proizvodac,"audi")) { | |
cout << "Serijski broj: " << pom.sb << endl; | |
cout << "Proizvodac: " << pom.proizvodac << endl; | |
cout << "Model: " << pom.model << endl; | |
cout << "Godina proizvodnje: " << pom.godina << endl; | |
cout<<"----------------------------------"<<endl<<endl; | |
}//if | |
}//if | |
}//while | |
cout<<"Novo stanje: "<<endl<<endl<<endl; | |
while (!IsEmptyS(P)) { | |
pom=TopS(P); | |
PopS(P); | |
if(pom.godina<2006 || !(stricmp(pom.proizvodac,"audi"))) { | |
PushS(pom,S); | |
cout << "Serijski broj: " << pom.sb << endl; | |
cout << "Proizvodac: " << pom.proizvodac << endl; | |
cout << "Model: " << pom.model << endl; | |
cout << "Godina proizvodnje: " << pom.godina << endl; | |
cout<<"----------------------------------"<<endl<<endl; | |
} | |
} | |
}//fun | |
void iskrcaj2(){ | |
if (!IsEmptyS(S)) { | |
tauto pom; | |
pom = TopS(S); | |
PopS(S); | |
if(!IsEmptyS(S)) | |
iskrcaj2(); | |
if(!(stricmp(pom.proizvodac,"audi"))){ | |
cout << "Serijski broj: " << pom.sb << endl; | |
cout << "Proizvodac: " << pom.proizvodac << endl; | |
cout << "Model: " << pom.model << endl; | |
cout << "Godina proizvodnje: " << pom.godina << endl; | |
cout<<"----------------------------------"<<endl<<endl; | |
} | |
else | |
PushS(pom, S); | |
return; | |
} | |
}//fun | |
int main() { | |
int iz; | |
bool uneseno = false; | |
do{ | |
izbornik(); | |
cin >> iz; | |
switch(iz){ | |
case 1: | |
for(int i=0;i<15;i++){ | |
unos(); | |
} | |
uneseno = true; | |
break; | |
case 2: | |
if(!uneseno){ | |
cout<<"Prvo unesite podatke o automobilima!!!"<<endl; | |
break; | |
} | |
iskrcaj1(); | |
break; | |
case 3: | |
if(!uneseno){ | |
cout<<"Prvo unesite podatke o automobilima!!!"<<endl; | |
break; | |
} | |
iskrcaj2(); | |
ispis(); | |
break; | |
}//switch | |
}while(iz != 0); | |
system("PAUSE"); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
lijep rad kolega, sviđa mi se kako ste izveli implementaciju TopS funkcije, kod mene inače vraća vrijednosti nazad u varijable kojoj smo ih proslijedili <-- pokazivači
možda bih samo preporučio korištenje CamelCase pisanja zbog lakše čitljivosti koda, inače kod je dost dobro napisan
pozdrav :)