Return to Snippet

Revision: 36403
at November 21, 2010 23:11 by Vanny9


Initial Code
Banka.cpp
________________
#include <iostream>
#include <string>
#include "red_polje.h"
//#include "red_pokazivac.h"
using namespace std;

struct banka{
       string ime;
       string prezime;
       int god_rodj;
       int stanje;
       int trans;    
       };
    
void ispisi(banka *x){
     cout<<endl<<"---KORISNIK---"<<endl;
     cout<<"Ime: "<<x->ime<<endl;
     cout<<"Prezime: "<<x->prezime<<endl;
     cout<<"Godina rodjenja: "<<x->god_rodj<<endl;
     cout<<"Stanje na racunu: "<<x->stanje<<endl;
     cout<<"Zeljena transakcija: ";
     if(x->trans==1)cout<<"uplata/isplata"<<endl; else if(x->trans==2)cout<<"Placanje"<<endl; else cout<<"Kredit"<<endl;
     }


Red <banka *> glavni;   


void dodaj_u_red(){
     glavni.InitQ(); 
     cout<<"---Unos novih korisnika u red---"<<endl;
     char jos;
     for(;;){
             cout<<endl<<"Zelite li unjeti novog korisnika u red? (d/n)   ";
             cin>>jos;
             if(jos=='n')break; else if (jos!='n' && jos!='d')continue;
             banka *x=new banka;;
             cout<<endl<<"---Unos novog korisnika u red---"<<endl;
             cout<<endl<<"Unesi ime: ";
             cin>>x->ime;
             cout<<endl<<"Unesi prezime: ";
             cin>>x->prezime;
             cout<<endl<<"Unesi godinu rodjenja: ";
             cin>>x->god_rodj;
             cout<<endl<<"Unesi stanje klijenta na racunu: ";
             cin>>x->stanje;
             cout<<endl<<"Zeljena transakcija (1 za uplatu/isplatu, 2 za placanje, 3 za kredit): ";
             cin>>x->trans;
             
             glavni.EnQueueQ(x);
             }
     cout<<endl<<"---Kraj unosa novih korisnika---"<<endl;
     }
   
void premjesti_starije(){
     Red<banka*> pom,stariji;
     pom.InitQ();
     stariji.InitQ();
     banka *tren;
     
     while(!glavni.IsEmpty()){
                              tren=glavni.DeQueueQ();
                              if(tren->god_rodj<1945) stariji.EnQueueQ(tren);
                              else pom.EnQueueQ(tren);
                              }
                              
     while(!stariji.IsEmpty()){
                               tren=stariji.DeQueueQ();
                               
                               glavni.EnQueueQ(tren);}
     
     while(!pom.IsEmpty()){
                               tren=pom.DeQueueQ();
                               
                               glavni.EnQueueQ(tren);}
     cout<<endl<<"---Stanje reda nakon premjestanja starijih korisnika---"<<endl;
     while(!glavni.IsEmpty())pom.EnQueueQ(glavni.DeQueueQ());
     while(!pom.IsEmpty()){tren=pom.DeQueueQ();
                               ispisi(tren);
                               glavni.EnQueueQ(tren);}
     }
     

void izbaci_bezpare(){
     Red<banka*> pom;
     pom.InitQ();
     banka *tren;
     cout<<endl<<"-Izbacujem iz reda korisnike sa manje od 100kn na racunu koji zele kredit: "<<endl;
     while(!glavni.IsEmpty()){
                              tren=glavni.DeQueueQ();
                              if(!(tren->stanje<100&&tren->trans==3)) pom.EnQueueQ(tren);
                              else{
                              cout<<endl<<"-IZBACUJEM:"; ispisi(tren);}
                              }
     cout<<endl<<"U redu ostaju: "<<endl;                         
     while(!pom.IsEmpty()){
                               tren=pom.DeQueueQ();
                               ispisi(tren);
                               glavni.EnQueueQ(tren);}
     
     }
     

void rekurzija(){
     banka *tren;
     tren=glavni.DeQueueQ();
     if(!glavni.IsEmpty()) rekurzija();
     glavni.EnQueueQ(tren);
     ispisi(tren);
     return;
     }
     
     
int main(){
    int izbor;
    do {
    system ("cls");
    cout << "Izbornik " << endl;
    cout << "1. Dodavanje klijenata u red " << endl;
    cout << "2. Premjestanje klijenata starijih od 65 na pocetak reda " << endl;
    cout << "3. Izbacivanje iz reda klijenata koji zele kredit a imaju manje od 100 kn " << endl;
    cout << "4. Stanje nakon pretrcavanja u novi red " << endl;
    cin >> izbor;
    switch (izbor) {
    case 1:
    dodaj_u_red();
    break;
    case 2:
    premjesti_starije();
    break;
    case 3:
    izbaci_bezpare();
    break;
    case 4:
    cout<<endl<<"Nakon pretrcavanja u novi red stanje je: "<<endl;
    rekurzija();
    cout<<endl<<"KRAJ"<<endl;
    break;
    }
    system("pause");
    }while (izbor!=9);
    return 0;
}      

Red_polje.h
__________
#include <string>
#include <stdlib.h>
#include <iostream>

using namespace std;

#define n 1000;
template <typename mytype>            
class Red{

	int in;
	int out;
	bool last_push;
	mytype *a;
public:
	void InitQ(){
		in=0;
		out=1;
		last_push=false;
		
	}
	mytype FrontQ(){
           if(IsEmpty()){ cout<<"Red je prazan"; return;}
           else return a[out]; 
           }
	bool IsEmpty(){
		if((in==out-1)&&(!last_push)) 
			return true;
		else return false;
	}
	void EnQueueQ(mytype x){
         
		if((in==out-1)&&(last_push)){ //?
			cout<<"Red je prepunjen, prekid rada..."<<endl;
			system("pause");
			exit(0);} 
			
		last_push=true;
		in=(in+1)%n; 
		
		a[in]=x; 
		
	}
	mytype DeQueueQ(){
		if(IsEmpty()){cout<<"Nema vise clanova u redu,prekid..."<<endl; system("pause"); exit(0);}
		last_push=false; 
		mytype x=a[out]; 
		out=(out+1)%n; 
		return x;
	}
	Red(){ 
		a=new mytype [1000];
		
        }

	};

Red_pokazivac.h
_________
#include <string>
#include <stdlib.h>
#include <iostream>

using namespace std;
template <typename type>
struct OE{
         type data;
        OE<type> *next;
       };
template <typename mytype>           
class Red{

	 OE<mytype> *zadnji;
	
	 OE<mytype> *prvi;
	
public:
       mytype FrontQ(){
              if(prvi==NULL){ cout<<"Red je prazan..."<<endl; return;}
              else
              return prvi->data;
              }
	void InitQ(){
		prvi=NULL;
		zadnji=NULL; 
		
	}
	bool IsEmpty(){
		if((zadnji==NULL)&&(prvi==NULL))
			return true;
		else return false;
	}
	void EnQueueQ(mytype x){
			
		
		 OE<mytype> *novi=new struct OE<mytype>; 
		novi->data=x; 
		novi->next=NULL; 
		if(IsEmpty()) {prvi=novi; zadnji=novi;} 
		else{
		zadnji->next=novi; 
		zadnji=novi;} 
				
	};
	mytype DeQueueQ(){
           
		if(IsEmpty()){cout<<"Nema vise clanova u redu,prekid..."<<endl; system("pause"); exit(0);}
	     OE<mytype> *tren=new OE<mytype>; 
		tren->data=prvi->data; 
	    struct OE<mytype> *brisanje=new struct OE<mytype>; 
	    brisanje=prvi;
	    prvi=prvi->next; 
        if(prvi==NULL) zadnji=NULL;
	    delete []brisanje; 
	    
		return tren->data; 
	}
	Red(){ 
		zadnji=NULL;
		prvi=NULL;
		
        }

	};

Initial URL

                                

Initial Description

                                

Initial Title
Program i biblioteke

Initial Tags

                                

Initial Language
C++