Return to Snippet

Revision: 36362
at November 21, 2010 04:14 by tosirovec


Initial Code
// biblioteka.polje

struct tnovi{ 
       char ime[15],prezime[15],izbor[15];
       int godina, stanje;       
};     typedef tnovi tipUnosa;

struct tred { 
	tipUnosa polje[1000];
	int pocetak,kraj;    
};

void InitQ(tred *red) { 
         red->pocetak=0; 
         red->kraj=999;
	
}

int AddOne(int n) { 
	return((n+1)%1000); 
}

void EnqueueQ(tipUnosa ulaz,tred *red) { 
	if (AddOne(AddOne(red->kraj))==red->pocetak) exit(0); 
	else {
		red->kraj=AddOne(red->kraj);
		red->polje[red->kraj]=ulaz;  
	}
}

tipUnosa FrontQ(tred *red) { 
	if (AddOne(red->kraj)==red->pocetak) exit(0); 
	else return(red->polje[red->pocetak]); 
}

void DequeueQ(tred *red) {
	if (AddOne(red->kraj)==red->pocetak) exit(0); 
	else red->pocetak=AddOne(red->pocetak); 
}

bool IsEmptyQ(tred *red) { 
	if (AddOne(red->kraj)==red->pocetak) return true; 
	else return false;
}



// biblioteka.pokazivač

struct tnovi{ 
       char ime[15],prezime[15],izbor[15];
       int godina, stanje;       
};     typedef tnovi tipUnosa;


struct  tred {
    	tipUnosa vrjednost;
    	struct tred *next,*pocetak,*kraj;
};

void InitQ(tred *red) { 
        tred *pom = new tred; 
        pom->next=NULL;     
        red->pocetak=pom;   
        red->kraj=pom; 
}

void DequeueQ(tred *red) { 
    	tred *pom;
    	if (red->pocetak==red->kraj) exit(0); 
    	else { 
    	     pom=red->pocetak;  
             red->pocetak=(red->pocetak)->next; 
             free(pom);                       
         }
}

void EnqueueQ( tipUnosa ulaz,tred *red) { 
    	tred *pom =new tred;
    	pom->next=NULL; 
        pom->vrjednost=ulaz; 
        (red->kraj)->next=pom;
        red->kraj=pom;
}

tipUnosa FrontQ(tred *red) { 
    	if (red->pocetak==red->kraj) exit(0); 
        else return(((red->pocetak)->next)->vrjednost); 
}

bool IsEmptyQ(tred *red){ 
     if (red->pocetak==red->kraj) 
         return true;
     else
	   return false;
}



// main.program

#include <iostream>
#include <cstdlib>
#include "RedPol.h"
//#inlcude "RedPok.h"
using namespace std;
int broj_k=0;
void unos_klijenata(tred *red);
void propustanje_starijih(tred *red);
void ispis(tnovi klijent);
void stanje_reda(tred *red);
void eliminacija(tred *red);
void otvaranje_saltera(tred *red);

int main(){
        int unos;
        tred *red = new tred;
        InitQ(red);
        do{
                    cout << "\n\t#------------- IZBORNIK ---------------#";
                    cout << "\n\t|\t1. Ulazak u banku              |";
                    cout << "\n\t|\t2. Izbaci nepogodne za kredit  |";       
                    cout << "\n\t|\t3. Otvori novi salter          |";
                    cout << "\n\t|\t0. Izlaz iz programa           |";
                    cout << "\n\t#--------------------------------------#";
                    cout << "\n\t\t\tVas izbor: ";
                    cin >> unos;
                    switch(unos){
                                 case 1:
                                      cout <<"\n#------------- Ulazak ---------------#\n";
                                      unos_klijenata(red);
                                      propustanje_starijih(red);
                                      stanje_reda(red);
                                 break;
                                 case 2:
                                      eliminacija(red);
                                      stanje_reda(red);
                                 break; 
                                 case 3:
                                      otvaranje_saltera(red);
                                      propustanje_starijih(red);
                                      stanje_reda(red);
                                 break; 
                                 case 0:
                                 break;
                                 default: cout << "\nPogresan unos!!\n";              
                    }
        }while(unos != 0);
        return 0;    
};

void ispis(tnovi klijent){
         cout <<"Ime klijenta : "<<klijent.ime<<endl;
         cout <<"Prezime klijenta : "<<klijent.prezime<<endl;    
         cout <<"Godina rodenja   : "<<klijent.godina<<endl;
         cout <<"Stanje racuna    : "<<klijent.stanje<<endl;
         cout <<"Vrsta transakcije : \n\t\t"<<klijent.izbor<<endl;
         cout <<"#------------------------------------#\n";       
}

void stanje_reda(tred *red){
         cout <<"\n#------------ Stanje reda -----------#\n";
         for (int i=0;i<broj_k;i++){
              ispis(FrontQ(red));
              EnqueueQ(FrontQ(red),red);
              DequeueQ(red);   
         }     
}

void otvaranje_saltera(tred *red){
     tnovi klijent;
     if (!IsEmptyQ(red)){
        klijent = FrontQ(red);
        DequeueQ(red);
        otvaranje_saltera(red);
     }
     else return;
     EnqueueQ(klijent,red);
}

void eliminacija(tred *red){
     tnovi klijent;
     int br=0;
     cout <<"\n#------------ Eliminacija -----------#\n";
     for (int i=0;i<broj_k;i++){
          klijent = FrontQ(red);
          if (klijent.stanje<100 && !strcmp(klijent.izbor,"Kreditiranje")){
             ispis(klijent);
             br--;                       
          }
          else EnqueueQ(klijent,red);
          DequeueQ(red);   
     }
     broj_k+=br;         
}

void propustanje_starijih(tred *red){
         tred *p_red = new tred;
         InitQ(p_red);
         for (int i=0;i<broj_k;i++){
             if (FrontQ(red).godina<1945){
                EnqueueQ(FrontQ(red),red);                           
             }
             else{
                EnqueueQ(FrontQ(red),p_red);  
             }
             DequeueQ(red);
         }
         while (!IsEmptyQ(p_red)){
                EnqueueQ(FrontQ(p_red),red);
                DequeueQ(p_red)  ;   
         }          

};

void  unos_klijenata(tred *red){
          tnovi klijent;
          int iz,k;
          cout <<"Koliko klijenata ulazi : ";
          cin >> k;
          for (int i=0;i<k;i++){
              cout <<"Unesite ime : ";
              cin.ignore();
              cin.getline(klijent.ime,14);
              cout <<"Unesite preime : ";
              cin.getline(klijent.prezime,14);
              cout <<"Unesite stanje racuna : ";
              cin >> klijent.stanje;
              cout <<"Unesite godine : ";
              cin >> klijent.godina;
              
              do{
                  cout <<"Tip transakcije : \n\t1. Uplata/Isplata\n\t2. Kreditiranje\n\t3. Placanja\nIzbor : ";
                  cin >> iz ;
                  if (iz==1) strcpy(klijent.izbor,"Uplata/Isplata");
                  else if (iz==2) strcpy(klijent.izbor,"Kreditiranje");
                  else if (iz==3) strcpy(klijent.izbor,"Placanja");
                  else cout <<"\nNepostojeca opcija!!\n";
              }while (iz != 1 && iz != 2 && iz != 3);
              EnqueueQ(klijent,red); 
              broj_k++;
              cout <<"#------------------------------------#\n";
          }                         
}

Initial URL


Initial Description


Initial Title
Zadatak iz Struktura podataka

Initial Tags
podataka

Initial Language
C++