Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.55 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. class Putnik{
  8.     int broj_karte;
  9.     string ime,prezime,odredisni_grad;
  10.     public:
  11.     Putnik(){}
  12.     void Ispisi();
  13.     int dajBrojKarte() const { return broj_karte; }
  14.     void Unesi();
  15. };
  16.  
  17.  
  18. class Lista{
  19.      struct Cvor{
  20.         Putnik element;
  21.         Cvor *sljedeci;
  22.         ~Cvor(){};
  23.     };
  24.     Cvor *pocetak, *kraj;
  25.     public:
  26.     Lista(){ kraj=pocetak=0;}
  27.     void DodajNaPocetak();
  28.     void DodajNaKraj();
  29.     void Pronadji();
  30.     void Brisi();
  31.     void IspisiURasponu();
  32.     bool ProvjeriImaLiPutnikaUBazi(int n);
  33. };
  34.  
  35. void Putnik::Ispisi(){
  36.     cout<<endl<<ime<<endl<<prezime<<endl<<odredisni_grad<<endl<<broj_karte;
  37. }
  38.  
  39.  
  40. void Putnik::Unesi(){
  41.     string x,y,z;
  42.     int n;
  43.     cout<<endl<<"Ime: ";
  44.     cin>>x;
  45.     ime=x;
  46.     cout<<endl<<"Prezime: ";
  47.     cin>>y;
  48.     prezime=y;
  49.     cout<<endl<<"Odredisni grad: ";
  50.     cin>>z;
  51.     odredisni_grad=z;
  52.     cout<<endl<<"Broj karte ";
  53.     cin>>n;
  54.     broj_karte=n;
  55. }
  56.  
  57. //ova funkcija sluzi da zabranimo unos 2 ili vise putnika sa istim brojem karte.
  58. bool Lista::ProvjeriImaLiPutnikaUBazi(int n){
  59.     Cvor *pom(pocetak);
  60.     while(pom!=NULL){
  61.         if(pom->element.dajBrojKarte()==n) return true;
  62.         pom=pom->sljedeci;
  63.     }
  64.     return false;
  65. }
  66.  
  67. void Lista::DodajNaKraj(){
  68.     //Na osnovu unesene karte provjeravamo da li putnik vec postoji;
  69.     int unos(0);
  70.     cout<<endl<<"Unesite broj karte: ";
  71.     cin>>unos;
  72.     if(ProvjeriImaLiPutnikaUBazi(unos)==true)
  73.         cout<<endl<<"Putnik sa brojem karte "<<unos<<" vec postoji u bazi.";
  74.         //ako unesena karta ne postoji u bazi unosimo podatke
  75.     else{
  76.         //ako je prvi putnik
  77.         if(pocetak==0){
  78.             pocetak=new Cvor;
  79.             Putnik novi;
  80.             novi.Unesi();
  81.             pocetak->element=novi;
  82.             pocetak->sljedeci=0;
  83.             kraj=pocetak;
  84.         }
  85.         else{
  86.             Putnik novi;
  87.             novi.Unesi();
  88.             kraj->sljedeci=new Cvor;
  89.             kraj=kraj->sljedeci;
  90.             kraj->element=novi;
  91.             kraj->sljedeci=0;
  92.         }
  93.     }
  94. }
  95.  
  96.  
  97. void Lista::DodajNaPocetak(){
  98.     int unos(0);
  99.     cout<<endl<<"Unesite broj karte: ";
  100.     cin>>unos;
  101.     if(ProvjeriImaLiPutnikaUBazi(unos)==true)
  102.         cout<<endl<<"Putnik sa brojem karte "<<unos<<" vec postoji u bazi.";
  103.         else{
  104.             if(pocetak==0){
  105.                 pocetak=new Cvor;
  106.                 Putnik novi;
  107.                 novi.Unesi();
  108.                 pocetak->element=novi;
  109.                 pocetak->sljedeci=0;
  110.                 kraj=pocetak;
  111.             }
  112.             else{
  113.                 Putnik novi;
  114.                 novi.Unesi();
  115.                 Cvor *pom=new Cvor;
  116.                 pom->sljedeci=pocetak;
  117.                 pocetak=pom;
  118.                 pocetak->element=novi;
  119.         }
  120.         }
  121. }
  122.  
  123. void Lista::Pronadji(){
  124.     int unos(0);
  125.     bool pronasao(false);
  126.     cout<<endl<<"Unesite broj karte putnika: ";
  127.     cin>>unos;
  128.     Cvor *pom(new Cvor);
  129.     pom=pocetak;
  130.     while(pom!=NULL){
  131.         if(pom->element.dajBrojKarte()==unos){
  132.             pronasao=true;
  133.             pom->element.Ispisi();
  134.             break;
  135.         }
  136.            pom=pom->sljedeci;
  137.     }
  138.      if(pronasao==false)
  139.             cout<<endl<<"Putnik sa brojem karte "<<pom->element.dajBrojKarte()<<" ne postoji.";
  140. }
  141.  
  142. void Lista::Brisi(){
  143.     int unos;
  144.     cout<<endl<<"Unesite broj karte putnika kojeg zelite obrisati: ";
  145.     cin>>unos;
  146.     if(ProvjeriImaLiPutnikaUBazi(unos)==false)
  147.         cout<<endl<<"Putnik sa brojem karte "<<unos<<" ne postoji u bazi.";
  148.         else{
  149.             Cvor *pom(new Cvor);
  150.             pom=pocetak;
  151.             bool pronasao(false);
  152.             while(pom!=NULL){
  153.                 if(pom->element.dajBrojKarte()==unos){
  154.                     pronasao=true;
  155.                     //1. slucaj:Student je na pocetku liste
  156.                     if(pom==pocetak){
  157.                     //ako je u listi bio samo jedan clan
  158.                         if(pocetak==kraj) pocetak=kraj=0;
  159.                         else pocetak=pocetak->sljedeci;
  160.                     }
  161.  
  162.                     //2. slucaj: Student je na kraju liste
  163.                     else if(pom==kraj){
  164.                         Cvor *p(pocetak);
  165.                         Cvor *r(pocetak);
  166.                         while(p!=kraj){
  167.                             r=p;
  168.                             p=p->sljedeci;
  169.  
  170.                         }
  171.                         kraj=r;
  172.                         kraj->sljedeci=0;
  173.                     }
  174.  
  175.                     //3. slucaj: Student je izmedju pocetka i kraja
  176.                     else{
  177.                         Cvor *p=new Cvor;
  178.                         p=pocetak;
  179.                         Cvor *r=new Cvor;
  180.                         r=pocetak;
  181.                         while(p!=pom){
  182.                             r=p;
  183.                             p=p->sljedeci;
  184.                         }
  185.                         r=r->sljedeci->sljedeci;
  186.                         p=r;
  187.                     }
  188.                     delete pom;
  189.                     cout<<endl<<"Putnik je izbrisan.";
  190.                     break;
  191.                 }
  192.                 pom=pom->sljedeci;
  193.            }
  194.            if(pronasao==false){
  195.                cout<<endl<<"Putnik sa brojem karte "<<unos<<" ne postoji u bazi.";
  196.            }
  197.          }
  198. }
  199.  
  200. void Lista::IspisiURasponu(){
  201.  
  202. }
  203.  
  204. int main()
  205. {
  206.     Lista JPL;
  207.     int unos(0);
  208.     try{
  209.         do{
  210.             cout<<endl<<"Izaberite jednu od opcija.";
  211.             cout<<endl<<"1 Dodaj na pocetak.";
  212.             cout<<endl<<"2 Dodaj na kraj.";
  213.             cout<<endl<<"3 Trazi";
  214.             cout<<endl<<"4 Ispisi u rasponu.";
  215.             cout<<endl<<"5 Brisi";
  216.             cout<<endl<<"6 Izlaz";
  217.             cout<<endl<<"Unos: ";
  218.             cin>>unos;
  219.             switch (unos){
  220.                 case 1:{
  221.                     JPL.DodajNaPocetak();
  222.                     break;
  223.                 }
  224.                 case 2:{
  225.                     JPL.DodajNaKraj();
  226.                     break;
  227.                 }
  228.                 case 3:{
  229.                     JPL.Pronadji();
  230.                     break;
  231.                 }
  232.                 case 4:
  233.                 case 5:{
  234.                     JPL.Brisi();
  235.                     break;
  236.                 }
  237.                 case 6:break;
  238.                 default: cout<<endl<<"Pogresan unos, pokusajte ponovo.";
  239.             }
  240.         }while(unos!=6);
  241.     }
  242.     catch(const char greska[]){
  243.          cout<<endl<<greska;
  244.     }
  245.     return 0;
  246. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement