From 9b3ac592867081596915b45d63c9336081f1a44b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ogrodowski?= Date: Wed, 13 Apr 2011 19:22:45 +0000 Subject: [PATCH] =?UTF-8?q?nie=20dzia=C5=82a!!!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit nie wiem czemu przy wywołaniu pętli: for(int k = 0; k < pas_tmp.size()-1; k++){ pietro2.numerPietra = pas_tmp.get(k).GetStop(); //System.out.println("L:"+pietro2.numerPietra); pietro2.pasazerowieWysiadajacy.add(pas_tmp.get(k)); trasa.add(licznik,pietro2); licznik++; i++; } tak jakby nadpisuje cały czas pietro2 i cały czas to samo się dodaje to trasa --- .../logic/AlgorytmNajblizszeWezwanie.java | 279 ++++++++++-------- 1 file changed, 157 insertions(+), 122 deletions(-) diff --git a/Winda/src/winda/logic/AlgorytmNajblizszeWezwanie.java b/Winda/src/winda/logic/AlgorytmNajblizszeWezwanie.java index 4983c55..5067318 100644 --- a/Winda/src/winda/logic/AlgorytmNajblizszeWezwanie.java +++ b/Winda/src/winda/logic/AlgorytmNajblizszeWezwanie.java @@ -13,147 +13,142 @@ import java.util.List; * @author Tomek */ public class AlgorytmNajblizszeWezwanie implements IAlgorytm{ - int pietroWindy = 1; - int maxPietro; - int minPietro = 1; + int pietroWindy = 0; + int maxPietro=11; + int minPietro = 0; int stop = 0; int start = 0; - Pasazer p = new Pasazer(0,0,0); + int NpietroWindy = 0; + Pasazer p = new Pasazer(-1,-1,-1); public List Trasa(List pasazerowie){ - + List trasa = new ArrayList(); - int [] t = new int[2*pasazerowie.size()+1]; - int[][] ttt = new int[2*pasazerowie.size()+1][3]; - int tab_len = 0; - int iluPasazerow = 0; - t[tab_len] = pietroWindy; - tab_len++; + int licznik = 0; + //List pas_tmp = new ArrayList(); int zmiana = 0; - + int i = 0; + Pietro pietro = new Pietro(); + + + int ile = 0; while(i < pasazerowie.size()){ - Pietro pietro = new Pietro(); - int z = 0; int s; - Pasazer[] ppp = new Pasazer[2*pasazerowie.size()]; int g=0; - for(int l = 0; l < pasazerowie.size(); l++){ - if(pietroWindy == pasazerowie.get(l).GetStart()){ - z = 1; - ppp[g] = pasazerowie.get(l); g++; - } - else{ - z = 0; - } - } - if(z == 1){ - for(int q=0;q pietro_tmp= new ArrayList(); + List pas_tmp = new ArrayList(); + boolean dodano = false; + boolean is = false; + ile=0; + for(int j = 0; j < pasazerowie.size(); j++){ + if(pietroWindy == pasazerowie.get(j).GetStart()){ + if(j==0){ + pietro.numerPietra = pietroWindy; + } + //is = true; + pietro.pasazerowieWsiadający.add(pasazerowie.get(j)); + //pietro.pasazerowieWysiadajacy.add(p); + for(int k = 0; k < trasa.size(); k++){ + for(int l = 0; l < trasa.get(k).pasazerowieWysiadajacy.size();l++){ + if(pietro.numerPietra == trasa.get(k).pasazerowieWysiadajacy.get(l).GetStop()){ + pietro.pasazerowieWysiadajacy.add(trasa.get(k).pasazerowieWysiadajacy.get(l)); + trasa.get(k).pasazerowieWysiadajacy.get(l).SetStop(-1); + } } } + pas_tmp.add(pasazerowie.get(j)); + } - } + } + + pietroWindy = pas_tmp.get(pas_tmp.size()-1).GetStop(); + trasa.add(licznik,pietro); licznik++; + i++; + for(int k = 0; k < pas_tmp.size()-1; k++){ + pietro2.numerPietra = pas_tmp.get(k).GetStop(); + //System.out.println("L:"+pietro2.numerPietra); + pietro2.pasazerowieWysiadajacy.add(pas_tmp.get(k)); + trasa.add(licznik,pietro2); licznik++; + i++; + } + + - zmiana = 0; - - for(int k = 0; k < maxPietro; k++){ - if(pietroWindy + k <= maxPietro){ - Pasazer[] pp = new Pasazer[2*pasazerowie.size()]; - int e=0; - for(int j = 0; j < pasazerowie.size(); j++){ - if(pietroWindy + k == pasazerowie.get(j).GetStart()){ - pp[e] = pasazerowie.get(j); e++; - } - } - for(int q=0;q= minPietro){ - Pasazer[] pp = new Pasazer[2*pasazerowie.size()]; - int e=0; - for(int j = 0; j < pasazerowie.size(); j++){ - if(pietroWindy - k == pasazerowie.get(j).GetStart()){ - pp[e] = pasazerowie.get(j); e++; - } - } - for(int q=0;q= minPietro){ + for(int n = 0; n < pasazerowie.size(); n++){ + if(pietroWindy - m == pasazerowie.get(n).GetStart()){ + if(n==0){ + pietro.numerPietra = pietroWindy-m; + } + //is = true; + pietro.pasazerowieWsiadający.add(pasazerowie.get(n)); + //pietro.pasazerowieWysiadajacy.add(p); + for(int k = 0; k < trasa.size(); k++){ + for(int l = 0; l < trasa.get(k).pasazerowieWysiadajacy.size();l++){ + if(pietro.numerPietra == trasa.get(k).pasazerowieWysiadajacy.get(l).GetStop()){ + pietro.pasazerowieWysiadajacy.add(trasa.get(k).pasazerowieWysiadajacy.get(l)); + trasa.get(k).pasazerowieWysiadajacy.get(l).SetStop(-1); + } + } + } + pas_tmp.add(pasazerowie.get(n)); + + } + } + pietroWindy = pas_tmp.get(pas_tmp.size()-1).GetStop(); + trasa.add(licznik,pietro); licznik++; + i++; + for(int k = 0; k < pas_tmp.size()-1; k++){ + pietro2.numerPietra = pas_tmp.get(k).GetStop(); + //System.out.println("L:"+pietro2.numerPietra); + pietro2.pasazerowieWysiadajacy.add(pas_tmp.get(k)); + trasa.add(licznik,pietro2); licznik++; + i++; + } + } + if(dodano) break; } - - trasa.add(pietro); + + + } @@ -163,4 +158,44 @@ public class AlgorytmNajblizszeWezwanie implements IAlgorytm{ public void SetMaxPietro(int maxPietro) { this.maxPietro = maxPietro; } -} \ No newline at end of file + + public static void main(String[] args) { + Pasazer p1 = new Pasazer(1,2,6); + Pasazer p2 = new Pasazer(2,9,1); + Pasazer p3 = new Pasazer(3,0,6); + Pasazer p4 = new Pasazer(4,6,1); + Pasazer p5 = new Pasazer(5,0,4); + Pasazer p6 = new Pasazer(6,0,5); + Pasazer p7 = new Pasazer(7,9,7); + + List lp = new ArrayList(); + lp.add(p1); + lp.add(p2); + lp.add(p3); + lp.add(p4); + lp.add(p5); + lp.add(p6); + lp.add(p7); + + List tr = new ArrayList(); + AlgorytmNajblizszeWezwanie l = new AlgorytmNajblizszeWezwanie(); + tr = l.Trasa(lp); + + for(int h = 0; h < tr.size(); h++){ + System.out.println("Pietro: "+tr.get(h).numerPietra); + System.out.print("Ws: "); + for(int i =0; i