Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- class Putnik{
- int broj_karte;
- string ime,prezime,odredisni_grad;
- public:
- Putnik(){}
- void Ispisi();
- int dajBrojKarte() const { return broj_karte; }
- void Unesi();
- };
- class Lista{
- struct Cvor{
- Putnik element;
- Cvor *sljedeci;
- ~Cvor(){};
- };
- Cvor *pocetak, *kraj;
- public:
- Lista(){ kraj=pocetak=0;}
- void DodajNaPocetak();
- void DodajNaKraj();
- void Pronadji();
- void Brisi();
- void IspisiURasponu();
- bool ProvjeriImaLiPutnikaUBazi(int n);
- };
- void Putnik::Ispisi(){
- cout<<endl<<ime<<endl<<prezime<<endl<<odredisni_grad<<endl<<broj_karte;
- }
- void Putnik::Unesi(){
- string x,y,z;
- int n;
- cout<<endl<<"Ime: ";
- cin>>x;
- ime=x;
- cout<<endl<<"Prezime: ";
- cin>>y;
- prezime=y;
- cout<<endl<<"Odredisni grad: ";
- cin>>z;
- odredisni_grad=z;
- cout<<endl<<"Broj karte ";
- cin>>n;
- broj_karte=n;
- }
- //ova funkcija sluzi da zabranimo unos 2 ili vise putnika sa istim brojem karte.
- bool Lista::ProvjeriImaLiPutnikaUBazi(int n){
- Cvor *pom(pocetak);
- while(pom!=NULL){
- if(pom->element.dajBrojKarte()==n) return true;
- pom=pom->sljedeci;
- }
- return false;
- }
- void Lista::DodajNaKraj(){
- //Na osnovu unesene karte provjeravamo da li putnik vec postoji;
- int unos(0);
- cout<<endl<<"Unesite broj karte: ";
- cin>>unos;
- if(ProvjeriImaLiPutnikaUBazi(unos)==true)
- cout<<endl<<"Putnik sa brojem karte "<<unos<<" vec postoji u bazi.";
- //ako unesena karta ne postoji u bazi unosimo podatke
- else{
- //ako je prvi putnik
- if(pocetak==0){
- pocetak=new Cvor;
- Putnik novi;
- novi.Unesi();
- pocetak->element=novi;
- pocetak->sljedeci=0;
- kraj=pocetak;
- }
- else{
- Putnik novi;
- novi.Unesi();
- kraj->sljedeci=new Cvor;
- kraj=kraj->sljedeci;
- kraj->element=novi;
- kraj->sljedeci=0;
- }
- }
- }
- void Lista::DodajNaPocetak(){
- int unos(0);
- cout<<endl<<"Unesite broj karte: ";
- cin>>unos;
- if(ProvjeriImaLiPutnikaUBazi(unos)==true)
- cout<<endl<<"Putnik sa brojem karte "<<unos<<" vec postoji u bazi.";
- else{
- if(pocetak==0){
- pocetak=new Cvor;
- Putnik novi;
- novi.Unesi();
- pocetak->element=novi;
- pocetak->sljedeci=0;
- kraj=pocetak;
- }
- else{
- Putnik novi;
- novi.Unesi();
- Cvor *pom=new Cvor;
- pom->sljedeci=pocetak;
- pocetak=pom;
- pocetak->element=novi;
- }
- }
- }
- void Lista::Pronadji(){
- int unos(0);
- bool pronasao(false);
- cout<<endl<<"Unesite broj karte putnika: ";
- cin>>unos;
- Cvor *pom(new Cvor);
- pom=pocetak;
- while(pom!=NULL){
- if(pom->element.dajBrojKarte()==unos){
- pronasao=true;
- pom->element.Ispisi();
- break;
- }
- pom=pom->sljedeci;
- }
- if(pronasao==false)
- cout<<endl<<"Putnik sa brojem karte "<<pom->element.dajBrojKarte()<<" ne postoji.";
- }
- void Lista::Brisi(){
- int unos;
- cout<<endl<<"Unesite broj karte putnika kojeg zelite obrisati: ";
- cin>>unos;
- if(ProvjeriImaLiPutnikaUBazi(unos)==false)
- cout<<endl<<"Putnik sa brojem karte "<<unos<<" ne postoji u bazi.";
- else{
- Cvor *pom(new Cvor);
- pom=pocetak;
- bool pronasao(false);
- while(pom!=NULL){
- if(pom->element.dajBrojKarte()==unos){
- pronasao=true;
- //1. slucaj:Student je na pocetku liste
- if(pom==pocetak){
- //ako je u listi bio samo jedan clan
- if(pocetak==kraj) pocetak=kraj=0;
- else pocetak=pocetak->sljedeci;
- }
- //2. slucaj: Student je na kraju liste
- else if(pom==kraj){
- Cvor *p(pocetak);
- Cvor *r(pocetak);
- while(p!=kraj){
- r=p;
- p=p->sljedeci;
- }
- kraj=r;
- kraj->sljedeci=0;
- }
- //3. slucaj: Student je izmedju pocetka i kraja
- else{
- Cvor *p=new Cvor;
- p=pocetak;
- Cvor *r=new Cvor;
- r=pocetak;
- while(p!=pom){
- r=p;
- p=p->sljedeci;
- }
- r=r->sljedeci->sljedeci;
- p=r;
- }
- delete pom;
- cout<<endl<<"Putnik je izbrisan.";
- break;
- }
- pom=pom->sljedeci;
- }
- if(pronasao==false){
- cout<<endl<<"Putnik sa brojem karte "<<unos<<" ne postoji u bazi.";
- }
- }
- }
- void Lista::IspisiURasponu(){
- }
- int main()
- {
- Lista JPL;
- int unos(0);
- try{
- do{
- cout<<endl<<"Izaberite jednu od opcija.";
- cout<<endl<<"1 Dodaj na pocetak.";
- cout<<endl<<"2 Dodaj na kraj.";
- cout<<endl<<"3 Trazi";
- cout<<endl<<"4 Ispisi u rasponu.";
- cout<<endl<<"5 Brisi";
- cout<<endl<<"6 Izlaz";
- cout<<endl<<"Unos: ";
- cin>>unos;
- switch (unos){
- case 1:{
- JPL.DodajNaPocetak();
- break;
- }
- case 2:{
- JPL.DodajNaKraj();
- break;
- }
- case 3:{
- JPL.Pronadji();
- break;
- }
- case 4:
- case 5:{
- JPL.Brisi();
- break;
- }
- case 6:break;
- default: cout<<endl<<"Pogresan unos, pokusajte ponovo.";
- }
- }while(unos!=6);
- }
- catch(const char greska[]){
- cout<<endl<<greska;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement