Advertisement
Dzok1517

Liste Listi DrugiKolok DodatniZadaci

May 14th, 2019
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.89 KB | None | 0 0
  1. //-----Klasa za Opremu
  2. public class Oprema{
  3.  
  4.   String opis;
  5.   String tip;
  6.   Oprema veza;
  7.  
  8.   public String toString(){
  9.     return tip+ "---" + opis+"|";
  10.   }
  11.  
  12.   public Oprema(String tip, String opis){
  13.     this.tip = tip;
  14.     this.opis = opis;
  15.     this.veza = null ;
  16.   }
  17. }
  18.  
  19. //---Klasa za ucionice
  20. public class Ucionica{
  21.   Ucionica veza;
  22.   Oprema pocetakSadrzaja;
  23.   String bojaZidova;
  24.   int brojacOpreme;
  25.  
  26.   public String toString(){
  27.     if(pocetakSadrzaja==null)
  28.       return "Prazna ucionica boje "+bojaZidova+" |--| '\n'";
  29.     else{
  30.       String rez = "Oprema iz ucionice boje zidova "+bojaZidova+" : ";
  31.       Oprema tekuci = pocetakSadrzaja;
  32.       while(tekuci != null){
  33.         rez+= tekuci +" ";
  34.         tekuci = tekuci.veza;
  35.       }
  36.       return rez+"|--| '\n' ";  
  37.     }
  38.   }
  39.  
  40.   public Ucionica(String bojaZidova){
  41.     this.bojaZidova = bojaZidova;
  42.     this.veza = null;
  43.     this.brojacOpreme = 0;
  44.   }
  45. }
  46.  
  47. //---Klasa za racunarski centar(grupu ucionica);
  48. public class RacunarskiCentar{
  49.   Ucionica prvaUcionica;
  50.   Ucionica poslednjaUcionica;
  51.   int brojacUcionica;
  52.  
  53.   public String toString(){
  54.     if(prvaUcionica == null)
  55.       return "Racunarski centar prazan";
  56.     else{
  57.       String rez = "Racunarski centar :'\n'";
  58.       Ucionica tekuci = prvaUcionica;
  59.       while(tekuci != null){
  60.         rez += tekuci;
  61.         tekuci = tekuci.veza;
  62.       }
  63.       return rez+"|";
  64.     }
  65.   }
  66.  
  67.   public void dodajNaPocetak(String boja){
  68.     Ucionica novi = new Ucionica(boja);
  69.     novi.veza = prvaUcionica;
  70.     prvaUcionica = novi;
  71.     if(poslednjaUcionica == null)
  72.       poslednjaUcionica = prvaUcionica;
  73.     brojacUcionica++;
  74.   }
  75.  
  76.   public void dodajNaKraj(String boja){
  77.     if(prvaUcionica == null)
  78.       dodajNaPocetak(boja);
  79.     else{
  80.       Ucionica nova = new Ucionica(boja);
  81.       poslednjaUcionica.veza = nova;
  82.       poslednjaUcionica = nova;
  83.       brojacUcionica++;
  84.     }
  85.   }
  86.   public Ucionica pokaziNaUcionicuZadatogRednogBroja(int redniBroj){
  87.     if(prvaUcionica == null)
  88.       return null;
  89.     else{
  90.       Ucionica tekuci = prvaUcionica;
  91.       int brojac = 1;
  92.       while(tekuci != null && brojac<redniBroj){      
  93.         brojac++;
  94.         tekuci = tekuci.veza;
  95.       }
  96.       return tekuci;
  97.     }
  98.   }
  99.  
  100.   public Ucionica pokaziNaUcionicuZadateBoje(String boja){
  101.     if(prvaUcionica == null)
  102.       return null;
  103.     else{
  104.       Ucionica tekuci = prvaUcionica;
  105.       while(tekuci != null){
  106.         if(tekuci.bojaZidova.equals(boja))
  107.           return tekuci;
  108.         tekuci = tekuci.veza;
  109.       }
  110.       return null;
  111.     }
  112.   }
  113.  
  114.   public boolean postojiUcionicaZadateBoje(String boja){
  115.     return pokaziNaUcionicuZadateBoje(boja) != null ;
  116.   }
  117.  
  118.   public void dodajOpremu(String tip, String opis, int redniBroj){
  119.     if(redniBroj>brojacUcionica || redniBroj<1)
  120.       return;
  121.     else{
  122.       Ucionica ciljanaUcionica = pokaziNaUcionicuZadatogRednogBroja(redniBroj);
  123.       //if(!ciljanaUcionica.bojaZidova.equals(uneta boja gore)) return; *var. za sledeci zadatak.
  124.       if(ciljanaUcionica.pocetakSadrzaja == null || ciljanaUcionica.pocetakSadrzaja.tip.compareTo(tip)>0 ){
  125.         Oprema novi = new Oprema(tip,opis);
  126.         novi.veza = ciljanaUcionica.pocetakSadrzaja;
  127.         ciljanaUcionica.pocetakSadrzaja = novi ;
  128.       }
  129.       else{
  130.         Oprema tekuci = ciljanaUcionica.pocetakSadrzaja;
  131.        
  132.         while(tekuci.veza != null && tekuci.tip.compareTo(tip)<0){
  133.           tekuci = tekuci.veza;
  134.         }
  135.         Oprema novi = new Oprema(tip,opis);
  136.         novi.veza = tekuci.veza;
  137.         tekuci.veza = novi;
  138.       }  
  139.     }
  140.   }
  141.  
  142.   public void ispisSveOpremeIzZadatih(String boja){
  143.     if(prvaUcionica==null)
  144.       return;
  145.     else{
  146.       Ucionica tekuci = prvaUcionica;
  147.       while(tekuci!=null){
  148.         if(tekuci.bojaZidova.equals(boja) )
  149.           System.out.println("Oprema iz trazene ucionice:'\n'"+tekuci);
  150.         tekuci = tekuci.veza;
  151.       }
  152.     }  
  153.   }
  154.  
  155.   public void prebrojavanjeTipaOpreme(String tipOpreme){
  156.     if(prvaUcionica == null)
  157.       return;
  158.     else{
  159.       Ucionica tekuci = prvaUcionica;
  160.       int brojacPomoc = 0;
  161.       while(tekuci!=null){
  162.         Oprema tekuci2 = tekuci.pocetakSadrzaja;
  163.         while(tekuci2!=null){
  164.           if(tekuci2.tip.equals(tipOpreme) )
  165.             brojacPomoc++;
  166.           tekuci2=tekuci2.veza;
  167.         }
  168.         tekuci=tekuci.veza;
  169.       }
  170.       System.out.println("Broj trazene opreme iz svih ucionica jeste: "+brojacPomoc);
  171.     }
  172.   }
  173.  
  174.   public void dodavanjeUNajprazniju(String tip, String opis){
  175.     if(prvaUcionica == null)
  176.       return;
  177.     else{
  178.       Ucionica tekuci = prvaUcionica;
  179.       int min =Integer.MAX_VALUE;
  180.       int brojacPozicije=1;
  181.       int pozicija= 0;
  182.       while(tekuci!=null){
  183.         int brojacPomoc= 0;
  184.         Oprema tekuci2 = tekuci.pocetakSadrzaja;
  185.         while(tekuci2!=null){
  186.           brojacPomoc++;
  187.           tekuci2 = tekuci2.veza;
  188.         }
  189.         if(brojacPomoc<min){
  190.           min = brojacPomoc;
  191.           pozicija = brojacPozicije;
  192.         }
  193.         tekuci=tekuci.veza;
  194.         brojacPozicije++;
  195.       }
  196.       dodajOpremu(tip,opis,pozicija);
  197.     }
  198.   }
  199.  
  200.   public void izbaciKomadOperemeIzZadateUcionice(int redniBroj,String tipOpreme){
  201.     if(prvaUcionica==null)
  202.       return;
  203.     else{
  204.       Ucionica ciljanaUcionica =pokaziNaUcionicuZadatogRednogBroja(redniBroj);
  205.      
  206.       while(ciljanaUcionica.pocetakSadrzaja!=null && ciljanaUcionica.pocetakSadrzaja.tip.equals(tipOpreme) )
  207.         ciljanaUcionica.pocetakSadrzaja = ciljanaUcionica.pocetakSadrzaja.veza;
  208.      
  209.       if(ciljanaUcionica.pocetakSadrzaja!=null){
  210.         Oprema tekuci = ciljanaUcionica.pocetakSadrzaja;
  211.         Oprema prethodni = null;
  212.         while(tekuci.veza!=null){
  213.           prethodni = tekuci;
  214.           tekuci = tekuci.veza;
  215.           if(tekuci.tip.equals(tipOpreme) ){
  216.             prethodni.veza = tekuci.veza;
  217.             tekuci.veza = null;
  218.             tekuci = prethodni;
  219.             return; // brise se return ako zelimo da obrisemo svu opremu zeljenog tipa
  220.           }    
  221.         }    
  222.       }
  223.     }
  224.   }
  225.   //izbaciti jedan komad opreme datog tipa i opisa iz bilo koje učionice učionice zadate bojom.
  226.   public void izbacitiFinal(String tipOpreme,String opisOpreme, String boja){
  227.     if(prvaUcionica==null)
  228.       return;
  229.     else{
  230.       Ucionica tekuci = prvaUcionica;
  231.       while(tekuci!=null){
  232.         if(tekuci.bojaZidova.equals(boja) ){
  233.           while(tekuci.pocetakSadrzaja!=null && tekuci.pocetakSadrzaja.tip.equals(tipOpreme) && tekuci.pocetakSadrzaja.opis.equals(opisOpreme))
  234.             tekuci.pocetakSadrzaja = tekuci.pocetakSadrzaja.veza;
  235.          
  236.           if(tekuci.pocetakSadrzaja!=null){
  237.             Oprema tekuci2 = tekuci.pocetakSadrzaja;
  238.             Oprema prethodni = null;
  239.             while(tekuci.veza!=null){
  240.               prethodni = tekuci2;
  241.               tekuci2=tekuci2.veza;
  242.               if(tekuci2.tip.equals(tipOpreme)&&tekuci2.opis.equals(opisOpreme) ){
  243.                 prethodni.veza = tekuci2.veza;
  244.                 tekuci2.veza = null;
  245.                
  246.                 tekuci2=prethodni;
  247.               }
  248.             }
  249.           }
  250.          
  251.         }
  252.         tekuci=tekuci.veza;
  253.       }
  254.     }
  255.   }  
  256. }
  257.  
  258. //----Posebna klasa za mejn gde se testira sve:
  259. public class Main{
  260.   public static void main(String[] args){
  261.    
  262.     RacunarskiCentar rc1 = new RacunarskiCentar();
  263.     System.out.println("rc 1 posle deklarisanja: " + rc1);
  264.     rc1.dodajNaKraj("bela");
  265.     rc1.dodajNaKraj("zuta");
  266.     rc1.dodajNaKraj("plava");
  267.     System.out.println("rc 1 posle dodavanja ucionica : " + rc1);
  268.    
  269.     rc1.dodajOpremu("ekran","lg",1);
  270.     rc1.dodajOpremu("ekran","samsung",1);
  271.     rc1.dodajOpremu("ekran","hisense",1);
  272.     rc1.dodajOpremu("tastatura","logitech",1);
  273.     rc1.dodajOpremu("tastatura","logitech",1);
  274.    
  275.     rc1.dodajOpremu("tastatura","redragon",3);
  276.     rc1.dodajOpremu("tastatura","razer",3);
  277.     rc1.dodajOpremu("tastatura","a4tech",3);
  278.     rc1.dodajOpremu("ekran","TCL",3);
  279.    
  280.     System.out.println("rc 1 posle dodavanja opreme : " + rc1);
  281.    
  282.     System.out.println("Ispis vezan za opremu iz ucionice zadate boje:'\n' " );
  283.     rc1.ispisSveOpremeIzZadatih("bela");
  284.    
  285.     System.out.println("Ispis vezan za prebojavanje opreme:'\n' " );
  286.     rc1.prebrojavanjeTipaOpreme("ekran");
  287.    
  288.     rc1.dodavanjeUNajprazniju("TestDodavanjaUnajprazniju","TestDodavanjaUnajprazniju");
  289.     System.out.println("rc 1 posle dodavanja opreme u najprazniju:'\n' " );
  290.     System.out.println(rc1);
  291.    
  292.     rc1.izbaciKomadOperemeIzZadateUcionice(2,"TestDodavanjaUnajprazniju");
  293.     System.out.println("rc 1 posle izbacivanja opreme iz druge ucionice:'\n' " );
  294.     System.out.println(rc1);
  295.    
  296.     rc1.izbacitiFinal("ekran","TCL", "plava");
  297.     System.out.println("rc 1 posle izbacivanja TCL ekrana iz trece ucionice:'\n' " );
  298.     System.out.println(rc1);
  299.   }
  300. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement