Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <iostream>
- //#include "stog_polje.h"
- #include "stog_pokazivac.h"
- using namespace std;
- troba roba3[1000];
- int brojac;
- void upis(stack *stog){
- troba roba2;
- cout<<endl;
- cout<<"Unesite sljedece podatke: "<<endl;
- cout<<"sifra: ";
- cin>>roba2.sifra;
- cout<<endl;
- cout<<"naziv: ";
- cin.ignore();
- cin.getline(roba2.naziv,20);
- cout<<endl;
- cout<<"vrsta robe: ";
- cin.getline(roba2.vrsta,20);
- cout<<endl;
- cout<<"datum proizvodnje(u rasponu od 1.1.2010 do 31.12.2011.): ";
- do{
- cout<<"dan: ";
- cin>>roba2.datum.dan;
- cout<<endl;}
- while(roba2.datum.dan<1||roba2.datum.dan>31);
- do{
- cout<<"mjesec: ";
- cin>>roba2.datum.mjesec;
- cout<<endl;}
- while(roba2.datum.mjesec<1||roba2.datum.mjesec>12);
- do{
- cout<<"godina: ";
- cin>>roba2.datum.godina;
- cout<<endl; }
- while(roba2.datum.godina<2010||roba2.datum.godina>2011);
- cout<<"rok trajanja: ";
- do{
- cout<<"dan: ";
- cin>>roba2.rok.dan;
- cout<<endl;}
- while(roba2.rok.dan<1||roba2.rok.dan>31);
- do{
- cout<<"mjesec: ";
- cin>>roba2.rok.mjesec;
- cout<<endl;}
- while(roba2.rok.mjesec<1||roba2.rok.mjesec>12);
- do{
- cout<<"godina: ";
- cin>>roba2.rok.godina;
- cout<<endl;}
- while(roba2.rok.godina<roba2.datum.godina);
- cout<<endl<<endl;
- pushs(roba2,stog);
- };
- void istovar_2010(stack *stog, stack *stog2){
- troba roba2;
- troba roba3[1000];
- int brojac=0;
- cout<<"Roba proizvedena prije 23.09.2010."<<endl;
- while(!isempty(stog)){
- roba2=tops(stog);
- pops(stog);
- pushs(roba2,stog2);
- if((roba2.datum.godina<=2010)&&(roba2.datum.mjesec<9))
- {
- cout<<endl;
- cout<<"sifra: "<<roba2.sifra<<endl;
- cout<<"naziv: "<<roba2.naziv<<endl;
- cout<<"vrsta robe: "<<roba2.vrsta<<endl;
- cout<<"datum: "<<roba2.datum.dan<<"."<<roba2.datum.mjesec<<"."<<roba2.datum.godina<<"."<<endl;
- cout<<"rok: "<<roba2.rok.dan<<"."<<roba2.rok.mjesec<<"."<<roba2.rok.godina<<"."<<endl;
- cout<<endl;}
- else if((roba2.datum.godina<=2010)&&(roba2.datum.mjesec==9) && (roba2.datum.dan<23)){
- cout<<endl;
- cout<<"sifra: "<<roba2.sifra<<endl;
- cout<<"naziv: "<<roba2.naziv<<endl;
- cout<<"vrsta robe: "<<roba2.vrsta<<endl;
- cout<<"datum: "<<roba2.datum.dan<<"."<<roba2.datum.mjesec<<"."<<roba2.datum.godina<<"."<<endl;
- cout<<"rok: "<<roba2.rok.dan<<"."<<roba2.rok.mjesec<<"."<<roba2.rok.godina<<"."<<endl;
- cout<<endl;}}
- while(!isempty(stog2)){
- roba3[brojac]=tops(stog2);
- pops(stog2);
- brojac++;
- }
- for(int i=0;i<brojac;i++){
- roba2=roba3[i];
- pushs(roba2,stog2);
- }
- cout<<"Stanje na stogu"<<endl;
- while(!isempty(stog2)){
- roba2=tops(stog2);
- pops(stog2);
- if(roba2.datum.godina>2010) {
- pushs(roba2,stog);
- cout<<"sifra: "<<roba2.sifra<<endl;
- cout<<"naziv: "<<roba2.naziv<<endl;
- cout<<"vrsta robe: "<<roba2.vrsta<<endl;
- cout<<"datum: "<<roba2.datum.dan<<"."<<roba2.datum.mjesec<<"."<<roba2.datum.godina<<"."<<endl;
- cout<<"rok: "<<roba2.rok.dan<<"."<<roba2.rok.mjesec<<"."<<roba2.rok.godina<<"."<<endl;
- cout<<endl; }
- if((roba2.datum.godina>=2010)&&(roba2.datum.mjesec>9)){
- pushs(roba2,stog);
- cout<<"sifra: "<<roba2.sifra<<endl;
- cout<<"naziv: "<<roba2.naziv<<endl;
- cout<<"vrsta robe: "<<roba2.vrsta<<endl;
- cout<<"datum: "<<roba2.datum.dan<<"."<<roba2.datum.mjesec<<"."<<roba2.datum.godina<<"."<<endl;
- cout<<"rok: "<<roba2.rok.dan<<"."<<roba2.rok.mjesec<<"."<<roba2.rok.godina<<"."<<endl;
- cout<<endl; }
- else if((roba2.datum.mjesec==9) && (roba2.datum.dan>23)){
- pushs(roba2,stog);
- cout<<"sifra: "<<roba2.sifra<<endl;
- cout<<"naziv: "<<roba2.naziv<<endl;
- cout<<"vrsta robe: "<<roba2.vrsta<<endl;
- cout<<"datum: "<<roba2.datum.dan<<"."<<roba2.datum.mjesec<<"."<<roba2.datum.godina<<"."<<endl;
- cout<<"rok: "<<roba2.rok.dan<<"."<<roba2.rok.mjesec<<"."<<roba2.rok.godina<<"."<<endl;
- cout<<endl;}}
- };
- bool provjera(troba roba){
- int razlika=15;
- if((roba.datum.godina==roba.rok.godina)&&(roba.datum.mjesec==roba.rok.mjesec)){
- razlika=roba.rok.dan-roba.datum.dan;}
- else if(roba.datum.godina==roba.rok.godina){
- if(roba.rok.mjesec-roba.datum.mjesec==1)
- razlika=(31-roba.datum.dan)+roba.rok.dan;}
- else if(roba.rok.godina-roba.datum.godina==1){
- if(roba.datum.mjesec-roba.rok.mjesec==11)
- razlika=(31-roba.datum.dan)+roba.rok.dan;
- }
- if (razlika<=14) return true;
- else return false;
- };
- void istovar(stack *stog){
- troba roba2;
- if(isempty(stog)) {return ;}
- roba2=tops(stog);
- pops(stog);
- if(provjera(roba2)){
- cout<<"================================"<<endl;
- cout<<"sifra: "<<roba2.sifra<<endl;
- cout<<"naziv: "<<roba2.naziv<<endl;
- cout<<"vrsta robe: "<<roba2.vrsta<<endl;
- cout<<"datum: "<<roba2.datum.dan<<"."<<roba2.datum.mjesec<<"."<<roba2.datum.godina<<"."<<endl;
- cout<<"rok: "<<roba2.rok.dan<<"."<<roba2.rok.mjesec<<"."<<roba2.rok.godina<<"."<<endl;
- cout<<endl; }
- else {roba3[brojac]=roba2; brojac++;}
- istovar(stog);
- };
- void stanje(stack *stog){
- cout<<"Stanje na stogu"<<endl;
- for(int i=0;i<brojac;i++){
- pushs(roba3[i],stog);
- cout<<"================================"<<endl;
- cout<<"sifra: "<<roba3[i].sifra<<endl;
- cout<<"naziv: "<<roba3[i].naziv<<endl;
- cout<<"vrsta robe: "<<roba3[i].vrsta<<endl;
- cout<<"datum: "<<roba3[i].datum.dan<<"."<<roba3[i].datum.mjesec<<"."<<roba3[i].datum.godina<<"."<<endl;
- cout<<"rok: "<<roba3[i].rok.dan<<"."<<roba3[i].rok.mjesec<<"."<<roba3[i].rok.godina<<"."<<endl;
- cout<<endl;}
- };
- void nula(){
- for(int i=0;i<brojac;i++){
- roba3[i].sifra=0;
- roba3[i].naziv[0]='/0';
- roba3[i].vrsta[0]='/0';
- roba3[i].datum.dan=0;
- roba3[i].datum.mjesec=0;
- roba3[i].datum.godina=0;
- roba3[i].rok.dan=0;
- roba3[i].rok.mjesec=0;
- roba3[i].rok.godina=0;
- }
- brojac=0;
- }
- int main()
- {
- int izbor;
- stack *stog;
- stog=new stack;
- inits(stog);
- stack *stog2;
- stog2=new stack;
- inits(stog2);
- troba roba2;
- do{
- cout<<"__________________________________________________________"<<endl;
- cout<<"Odaberite"<<endl;
- cout<<"1 za utovar robe u skladište!"<<endl;
- cout<<"2 za istovar robe proizvedene prije 23.09.2010.(pomocni stog)"<<endl;
- cout<<"3 za istovar lako pokvarljive robe u drugoj trgovini(rekurzija)"<<endl;
- cout<<"9 za izlaz iz programa"<<endl;
- cin>>izbor;
- switch(izbor){
- case 1: upis(stog); break;
- case 2: istovar_2010(stog,stog2);break;
- case 3: {if(isempty(stog)){cout<<"Stog je prazan"<<endl; break;}
- nula();
- istovar(stog);
- stanje(stog);
- }
- break;
- case 9: return 0; break;
- default: break;
- }}
- while(izbor!=9);
- system("PAUSE");
- return EXIT_SUCCESS;
- }
Add Comment
Please, Sign In to add comment