import java.applet.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; public class Uzem extends Applet implements ActionListener { // az applet adattagjai Graphics g; Polygon terkep; ArrayList varosok; int[] optimum; boolean optRajzol; double[] valosoptimum; int[] eddigvizsgalt; Panel teljesPanel; Panel kezeloPanel; Panel radiogombokPanel; Panel holallmegPanel; Panel mitirkiPanel; CheckboxGroup holallmeg; CheckboxGroup mitirki; Button futtatButton; Button elorolButton; TextArea outputTextArea; public double szamolValosSzelesseg(){ double valasz = 0.0; valasz = (28-optimum[1]+458)/10; return valasz; } public double szamolValosHosszusag(){ double valasz = 0.0; valasz = (optimum[0]+163)/10; return valasz; } public void szamolValosOptimum(){ // eszaki szelesseg: valosoptimum[0] = ((double) ((275-optimum[1])+4580))/100; // keleti hosszusag: valosoptimum[1] = ((double) (optimum[0]+1627))/100; } public int maxkoordX(){ int valasz=0; for(int i=0; i valasz){ valasz = terkep.xpoints[i]; } } return valasz; } public int maxkoordY(){ int valasz=0; for(int i=0; i valasz){ valasz = terkep.ypoints[i]; } } return valasz; } public void initOptimum(){ Random r = new Random(); do { optimum[0]=r.nextInt(maxkoordX()); optimum[1]=r.nextInt(maxkoordY()); } while(!terkep.contains(optimum[0],optimum[1])); } /* public void initOptimum(){ int i; int j; i = maxkoordX(); j = maxkoordY(); while(j >= 0){ i=maxkoordX(); while(i >= 0){ if(terkep.contains(i,j)){ optimum[0] = i; optimum[1] = j; return; } i--; } j--; } return; } */ // az újrakezdéshez beállitja az "optimum", "valosoptimum", "eddigvizsgalt", "optRajzol" változók értékét public void kezdoertekBeallit(){ //optimum init: initOptimum(); //optRajzol optRajzol = false; //valosoptimum szamolValosOptimum(); // eddigvizsgalt eddigvizsgalt[0] = maxkoordX(); eddigvizsgalt[1] = maxkoordY(); //gomb: futtatButton.setLabel("Keresés indítása"); } public void init(){ // a polygon inicializalasa (a neve terkep) initTerkep(); // a varosok listajanak feltoltese initVarosok(); // seged valtozok inicializalasa optimum = new int[2]; valosoptimum = new double[2]; eddigvizsgalt = new int[2]; //a GUI inicializálása g = getGraphics(); setLayout(new BorderLayout()); teljesPanel = new Panel(new GridLayout(2,1)); kezeloPanel = new Panel(new FlowLayout()); radiogombokPanel = new Panel(new GridLayout(1,2, 15, 0)); holallmegPanel = new Panel(new GridLayout(3,1)); mitirkiPanel = new Panel(new GridLayout(3,1)); // holallmegPanel: holallmegPanel.setBackground(Color.white); holallmegPanel.add(new Label("Meddig fusson a program?")); holallmeg = new CheckboxGroup(); holallmegPanel.add(new Checkbox("menjen végig az algoritmus", holallmeg, true)); holallmegPanel.add(new Checkbox("álljon meg, ha változik az optimum", holallmeg, false)); // mitirkiPanel: mitirkiPanel.setBackground(Color.white); mitirkiPanel.add(new Label("Mit írjon ki a program?")); mitirki = new CheckboxGroup(); mitirkiPanel.add(new Checkbox("csak a végső optimumot írja ki", mitirki, true)); mitirkiPanel.add(new Checkbox("írja ki, ha változik az optimum", mitirki, false)); // radiogombokPanel: radiogombokPanel.add(holallmegPanel); radiogombokPanel.add(mitirkiPanel); // futtatButton: +ActionListener hozzáadása futtatButton = new Button("Keresés indítása"); futtatButton.addActionListener(this); // elorolButton + ActionListener hozzáadása elorolButton = new Button("Kezdjük előről"); elorolButton.addActionListener(this); // kezeloPanel: kezeloPanel.add(radiogombokPanel); kezeloPanel.add(futtatButton); kezeloPanel.add(elorolButton); // outputTextArea: outputTextArea = new TextArea("", 2, 1, 1); outputTextArea.append("Állítsd be, hogy \"meddig fusson\", és hogy \"mit írjon ki a program\", azután \"Keresés indítása\"!\n"); // teljesPanel: teljesPanel.add(kezeloPanel); teljesPanel.add(outputTextArea); // az egész hozzáadása az applet-hez add("South", teljesPanel); kezdoertekBeallit(); repaint(); } public void paint(Graphics g){ setBackground(Color.white); g.setColor(Color.black); //polygon g.drawPolygon(terkep); //fokhálózat g.setColor(new Color(200,200,200)); g.drawString("é.sz.46°",0,255); g.drawLine(0,255,maxkoordX(),255); g.drawString("é.sz.47°",0,155); g.drawLine(0,155,maxkoordX(),155); g.drawString("é.sz.48°",0,55); g.drawLine(0,55,maxkoordX(),55); g.drawString("k.h.17°",73,10); g.drawLine(73,0,73,maxkoordY()); g.drawString("k.h.18°",173,10); g.drawLine(173,0,173,maxkoordY()); g.drawString("k.h.19°",273,10); g.drawLine(273,0,273,maxkoordY()); g.drawString("k.h.20°",373,10); g.drawLine(373,0,373,maxkoordY()); g.drawString("k.h.21°",473,10); g.drawLine(473,0,473,maxkoordY()); g.drawString("k.h.22°",573,10); g.drawLine(573,0,573,maxkoordY()); g.setColor(Color.black); //városok Iterator it = varosok.iterator(); while(it.hasNext()){ Varos v = (Varos) it.next(); if (v.getLakossag() > 30000) { g.fillOval(v.getXKoordinata(), v.getYKoordinata(), 6, 6); g.drawString(v.getNev(), v.getXKoordinata(), v.getYKoordinata()); } } //optimum if (optRajzol) { g.setColor(Color.red); g.fillOval(optimum[0], optimum[1], 8, 8); } else { g.setColor(Color.magenta); g.fillOval(optimum[0], optimum[1], 8, 8); } g.setColor(Color.black); } public void actionPerformed(ActionEvent evt){ if (evt.getSource() == futtatButton) { if (holallmeg.getSelectedCheckbox().getLabel().equals("menjen végig az algoritmus")) { if (mitirki.getSelectedCheckbox().getLabel().equals("csak a végső optimumot írja ki")) { optKeres(true, false); repaint(); } else if (mitirki.getSelectedCheckbox().getLabel().equals("írja ki, ha változik az optimum")){ optKeres(true, true); repaint(); } } else if (holallmeg.getSelectedCheckbox().getLabel().equals("álljon meg, ha változik az optimum")) { if (mitirki.getSelectedCheckbox().getLabel().equals("csak a végső optimumot írja ki")) { optKeres(false, false); futtatButton.setLabel("Következő lépés"); repaint(); } else if (mitirki.getSelectedCheckbox().getLabel().equals("írja ki, ha változik az optimum")){ optKeres(false, true); futtatButton.setLabel("Következő lépés"); repaint(); } } } else if(evt.getSource() == elorolButton) { kezdoertekBeallit(); futtatButton.setEnabled(true); outputTextArea.append("\nA program újraindult!\nÁllítsd be, hogy \"meddig fusson\", és hogy \"mit írjon ki a program\", azután \"Keresés indítása\"!\n"); repaint(); } } public void optKeres(boolean vegigmegye, boolean kiirjae){ //minden pontra, ami Mo-ban van, celfgv-t szamol, a min celfgv-ju pontot adja vissza double minertek; double celij; optRajzol = true; minertek = celFuggveny(optimum[0], optimum[1]); // vegigmegy a pontokon, keresi a minimumot int i0 = eddigvizsgalt[0]; int j0 = eddigvizsgalt[1]; //azt a sort vizgsálja, ahol most tart: for(int i=i0; i>=0; i--){ int j = j0; if (terkep.contains(i,j)) { // ha a pont az orszagban van, szamoljuk ra a celfuggveny-erteket celij = celFuggveny(i,j); eddigvizsgalt[0] = i; eddigvizsgalt[1] = j; if (celij < minertek) { // ha a celfgv < az eddigi opt-nal, (i,j) lesz az új optimum minertek = celij; optimum[0] = i; optimum[1] = j; if(kiirjae){ String s = new String("\nAz optimum megváltozott!\nAz aktuális optimum: északi szélesség "+valosoptimum[0]+"°, keleti hosszúság "+valosoptimum[1]+"°!\n"); outputTextArea.append(s); } if(!vegigmegye){ if (!kiirjae) { outputTextArea.append("\n"); } outputTextArea.append("Az algoritmus megállt. A \"Következő lépés\" gomb megnyomására fut tovább!\n"); return; } } } } // a többi pontot vizsgálja: for (int j=(j0-1); j>=0; j--) { for (int i=maxkoordX(); i>=0; i--) { if (terkep.contains(i,j)) { // ha a pont az orszagban van, szamoljuk ra a celfuggveny-erteket celij = celFuggveny(i,j); eddigvizsgalt[0] = i; eddigvizsgalt[1] = j; if (celij < minertek) { // ha a celfgv < az eddigi opt-nal, (i,j) lesz az új optimum minertek = celij; optimum[0] = i; optimum[1] = j; if(kiirjae){ szamolValosOptimum(); String s = new String("\nAz optimum megváltozott!\nAz aktuális optimum: északi szélesség "+valosoptimum[0]+"°, keleti hosszúság "+valosoptimum[1]+"°!\n"); outputTextArea.append(s); } if(!vegigmegye){ if(!kiirjae) { outputTextArea.append("\n"); } outputTextArea.append("Az algoritmus megállt. A \"Következő lépés\" gomb megnyomására fut tovább!\n"); return; } } } } } szamolValosOptimum(); outputTextArea.append("\nAz algoritmus lefutott.\nAz üzem optimális helye: északi szélesség "+valosoptimum[0]+"°, keleti hosszúság "+valosoptimum[1]+"°!\n"); outputTextArea.append("A \"Kezdjük előről\" gomb hatására a program újraindul, így más beállításokkal újra futtatható!\n"); futtatButton.setEnabled(false); return; } // az (x,y) pontra kiszamolja a hozza tartozo celfugvenyt public double celFuggveny(int x, int y) { double valasz = 0.0; double tavolsag = 0.0; Iterator iter = varosok.iterator(); while (iter.hasNext()) { Varos va = (Varos) iter.next(); // if ((tavolsag(va.getXKoordinata(), va.getYKoordinata(), x, y)) < 130.0) { //???????????: mi a közeli város????? if ((tavolsag(va.getXKoordinata(), va.getYKoordinata(), x, y)) == 0.0) { tavolsag = 1e-1; } else { tavolsag = tavolsag(va.getXKoordinata(), va.getYKoordinata(), x, y); } valasz += (va.getLakossag() / tavolsag); // } } return valasz; } public double tavolsag(int x1, int y1, int x2, int y2){ double osz = (double) (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2); return(Math.sqrt(osz)); } public void initTerkep(){ terkep = new Polygon(); terkep.addPoint(382, 237); //Röszke terkep.addPoint(395, 238); //Tiszasziget ÚJ!!! terkep.addPoint(406, 240); //Kübekháza ÚJ!!! terkep.addPoint(422, 236); //Kiszombor ÚJ!!! terkep.addPoint(437, 237); //Apátfalva ÚJ!!! terkep.addPoint(451, 237); //Nagylak terkep.addPoint(452, 231); //Csanádpalota ÚJ!!! terkep.addPoint(461, 223); //Mezőhegyes ÚJ!!! terkep.addPoint(482, 225); //Battonya terkep.addPoint(503, 211); //Lökösháza terkep.addPoint(527, 180); //Kötegyán ÚJ!!!! terkep.addPoint(541, 149); //Kőrösszegapáti ÚJ!!! terkep.addPoint(553, 141); //Ártánd ÚJ!!! terkep.addPoint(565, 121); //Cserekert ÚJ!!!! terkep.addPoint(577, 98); //Nyírábrány terkep.addPoint(600, 76); //Bátorliget ÚJ!!! terkep.addPoint(612, 75); //Vállaj terkep.addPoint(614, 70); //Tiborszállás ÚJ!!! terkep.addPoint(635, 71); //Csengerújfalu ÚJ!!! terkep.addPoint(648, 66); //Nagygéc ÚJ!!! terkep.addPoint(652, 60); //Zajta terkep.addPoint(657, 58); //Méhtelek ÚJ!!! terkep.addPoint(658, 56); //Garbolc ÚJ!!! terkep.addPoint(657, 54); //Nagyhódos ÚJ!!!! terkep.addPoint(655, 54); //Kishódos ÚJ!!!! terkep.addPoint(655, 49); //Kispalád ÚJ!!! terkep.addPoint(657, 43); //Uszka ÚJ!!! terkep.addPoint(653, 41); //Tiszabecs terkep.addPoint(649, 41); //Milota ÚJ!!!! terkep.addPoint(646, 40); //Tiszacsécse ÚJ!!! terkep.addPoint(642, 41); //Tiszakóród ÚJ!!! terkep.addPoint(634, 43); //Szatmárcseke ÚJ!!! terkep.addPoint(630, 41); //fiktív pont(Szatmárcseke, Tarpa) ÚJ!!! terkep.addPoint(626, 36); //Beregsurány ÚJ!!! terkep.addPoint(624, 32); //Beregdaróc ÚJ!!! terkep.addPoint(614, 29); //Barabás ÚJ!!! terkep.addPoint(607, 30); //fiktív pont(Barabás, Tiszaadony) ÚJ!!! terkep.addPoint(603, 18); //fiktív pont(Eperjeske, Vásárosnamény) ÚJ!!! terkep.addPoint(588, 12); //Záhony terkep.addPoint(577, 17); //Zemplénagárd ÚJ!!! terkep.addPoint(574, 16); //Dámóc ÚJ!!! terkep.addPoint(569, 17); //Lácacséke ÚJ!!! terkep.addPoint(563, 20); //Nagyrozvágy ÚJ!!! terkep.addPoint(555, 21); //Pácin ÚJ!!! terkep.addPoint(545, 21); //Karos ÚJ!!! terkep.addPoint(540, 20); //Alsóberecki ÚJ!!! terkep.addPoint(537, 14); //Sátoraljaújhely terkep.addPoint(531, 5); //Felsőregmec ÚJ!!!!! terkep.addPoint(512, 1); //Hollóháza terkep.addPoint(482, 9); //Szemere ÚJ!!!!! terkep.addPoint(450, 0); //Tornanádaska terkep.addPoint(423, 10); //Aggtelek terkep.addPoint(409, 27); //Bánréve terkep.addPoint(379, 42); //Zabar ÚJ!!!!! terkep.addPoint(348, 41); //Karancslapújtő ÚJ!!!!! terkep.addPoint(337, 33); //Ipolytarnóc terkep.addPoint(328, 39); //Nógrádszakál ÚJ!!!!! terkep.addPoint(327, 49); //Szécsény ÚJ!!!!! terkep.addPoint(305, 50); //Balassagyarmat terkep.addPoint(280, 52); //Drégelypalánk ÚJ!!!!! terkep.addPoint(275, 52); //Hont ÚJ!!!! terkep.addPoint(260, 54); //Tésa terkep.addPoint(255, 59); //Vámosmikola ÚJ!!! terkep.addPoint(254, 68); //Letkés ÚJ!!! terkep.addPoint(262, 75); //Szob terkep.addPoint(250, 78); //Esztergom ÚJ!!!!! terkep.addPoint(231, 81); //Nyergesújfalu ÚJ!!!!! terkep.addPoint(191, 83); //Komárom terkep.addPoint(141, 80); //Vámosszabadi terkep.addPoint(121, 67); //fiktív pont ÚJ!!!! terkep.addPoint(97, 56); //Rajka terkep.addPoint(84, 72); //Várbalog ÚJ!!! terkep.addPoint(89, 82); //Hanságfalva ÚJ!!! terkep.addPoint(42, 82); //Fertőrákos ÚJ!!! terkep.addPoint(26, 88); //Brennbergbánya ÚJ!!! // terkep.addPoint(41, 90); //Kópháza ÚJ!!! terkep.addPoint(46, 94); //Nagycenk terkep.addPoint(50, 100); //Sopronkövesd ÚJ!!! terkep.addPoint(44, 108); //Zsira ÚJ!!! terkep.addPoint(30, 115); //Kőszeg terkep.addPoint(24, 119); //Velem ÚJ!!! terkep.addPoint(22, 150); //Pinkamindszent ÚJ!!! terkep.addPoint(14, 156); //Vasszentmihály ÚJ!!! terkep.addPoint(2, 155); //Rábafüzes ÚJ!!! terkep.addPoint(0, 158); //Szentgotthárd terkep.addPoint(0, 165); //Orfalu ÚJ!!!! terkep.addPoint(8, 174); //Kercaszomor ÚJ!!! terkep.addPoint(12, 189); //Bödeháza ÚJ!!! terkep.addPoint(19, 192); //Rédics terkep.addPoint(44, 211); //Letenye terkep.addPoint(54, 215); //Molnári ÚJ!!! terkep.addPoint(59, 218); //Murakeresztúr ÚJ!!! terkep.addPoint(65, 228); //Zákány ÚJ!!! terkep.addPoint(71, 230); //Gyékényes ÚJ!!! terkep.addPoint(90, 237); //Somogyudvarhely ÚJ!!! terkep.addPoint(107, 253); //Péterhida ÚJ!!! terkep.addPoint(117, 259); //Barcs terkep.addPoint(133, 259); //Kastélyosdombó ÚJ!!! terkep.addPoint(141, 265); //Lakócsa ÚJ!!! terkep.addPoint(142, 270); //Felsőszentmárton ÚJ!!! terkep.addPoint(161, 274); //Zaláta ÚJ!!! terkep.addPoint(194, 275); //Drávaszabolcs terkep.addPoint(218, 277); //Beremend ÚJ!!!! terkep.addPoint(226, 275); //Illocska ÚJ!!! terkep.addPoint(236, 271); //Sárok ÚJ!!! terkep.addPoint(241, 266); //Udvar ÚJ!!! terkep.addPoint(269, 261); //Hercegszántó terkep.addPoint(280, 258); //Bácsszentgyörgy ÚJ!!! terkep.addPoint(280, 252); //Gara ÚJ!!! terkep.addPoint(297, 252); //Katymár ÚJ!!! terkep.addPoint(319, 247); //Kunbaja ÚJ!!! terkep.addPoint(324, 243); //Csikéria ÚJ!!!! terkep.addPoint(338, 236); //Kelebia } public void initVarosok(){ varosok = new ArrayList(); //Bács-Kiskun varosok.add(new Varos("Kecskemét", 103312, 345, 166)); varosok.add(new Varos("Baja", 37153, 270, 238)); varosok.add(new Varos("Kiskunfélegyháza", 32036, 361, 185)); varosok.add(new Varos("Kiskunhalas", 29379, 325, 213)); varosok.add(new Varos("Kalocsa", 18181, 273, 203)); varosok.add(new Varos("Kiskőrös", 15366, 305, 194)); varosok.add(new Varos("Kiskunmajsa", 11996, 350, 207)); varosok.add(new Varos("Tiszakécske", 11773, 387, 163)); varosok.add(new Varos("Lajosmizse", 11011, 332, 154)); varosok.add(new Varos("Jánoshalma", 9813, 309, 226)); //Baranya varosok.add(new Varos("Pécs", 153335, 196, 255)); varosok.add(new Varos("Komló", 27135, 200, 236)); varosok.add(new Varos("Mohács", 19100, 243, 257)); varosok.add(new Varos("Szigetvár", 11398, 152, 250)); varosok.add(new Varos("Siklós", 10389, 203, 270)); varosok.add(new Varos("Szentlőrinc", 7108, 172, 252)); varosok.add(new Varos("Pécsvárad", 4046, 216, 240)); varosok.add(new Varos("Bóly", 3919, 226, 259)); varosok.add(new Varos("Sásd", 3629, 184, 230)); varosok.add(new Varos("Harkány", 3271, 197, 270)); //Békés varosok.add(new Varos("Békécsaba", 66473, 480, 190)); varosok.add(new Varos("Orosháza", 32278, 440, 200)); varosok.add(new Varos("Gyula", 32000, 500, 190)); varosok.add(new Varos("Békés", 21617, 491, 177)); varosok.add(new Varos("Szarvas", 17965, 433, 169)); varosok.add(new Varos("Gyomaendrőd", 15457, 453, 162)); varosok.add(new Varos("Mezőberény", 11294, 481, 172)); varosok.add(new Varos("Sarkad", 10993, 518, 180)); varosok.add(new Varos("Szeghalom", 10454, 494, 152)); varosok.add(new Varos("Dévaványa", 9210, 473, 152)); //Borsod-Abaúj-Zemplén varosok.add(new Varos("Miskolc", 179507, 450, 50)); varosok.add(new Varos("Ózd", 39552, 400, 40)); varosok.add(new Varos("Kazincbarcika", 32962, 430, 40)); varosok.add(new Varos("Mezőkövesd", 18080, 432, 75)); varosok.add(new Varos("Sátoraljaújhely", 17948, 537, 14)); varosok.add(new Varos("Tiszaújváros", 17641, 478, 62)); varosok.add(new Varos("Sárospatak", 14138, 528, 23)); varosok.add(new Varos("Sajószentpéter", 13342, 444, 34)); varosok.add(new Varos("Edelény", 11270, 447, 26)); varosok.add(new Varos("Szerencs", 10283, 492, 39)); //Csongrád varosok.add(new Varos("Szeged", 156443, 380, 230)); varosok.add(new Varos("Hódmezővásárhely", 47851, 410, 220)); varosok.add(new Varos("Szentes", 30997, 400, 190)); varosok.add(new Varos("Makó", 25607, 403, 190)); varosok.add(new Varos("Csongrád", 18512, 392, 185)); varosok.add(new Varos("Kistelek", 7405, 375, 209)); varosok.add(new Varos("Mindszent", 7399, 397, 203)); varosok.add(new Varos("Mórahalom", 5452, 366, 234)); //Fejér varosok.add(new Varos("Székesfehérvár", 103070, 220, 140)); varosok.add(new Varos("Dunaújváros", 53036, 240, 160)); varosok.add(new Varos("Mór", 14826, 196, 118)); varosok.add(new Varos("Sárdbogárd", 13544, 238, 168)); varosok.add(new Varos("Bicske", 11019, 239, 107)); varosok.add(new Varos("Ercsi", 8446, 265, 132)); varosok.add(new Varos("Gárdony", 8114, 239, 136)); varosok.add(new Varos("Enying", 7188, 199, 163)); varosok.add(new Varos("Polgárdi", 6313, 205, 150)); //Győr-Moson-Sopron varosok.add(new Varos("Győr", 124556, 140, 90)); varosok.add(new Varos("Sopron", 53132, 35, 86)); varosok.add(new Varos("Mosonmagyaróvár", 29933, 103, 69)); varosok.add(new Varos("Kapuvár", 10758, 79, 96)); varosok.add(new Varos("Csorna", 10756, 101, 94)); varosok.add(new Varos("Pannonhalma", 3624, 151, 101)); varosok.add(new Varos("Fertőd", 3395, 64, 93)); //Hajdú-Bihar varosok.add(new Varos("Debrecen", 198905, 530, 110)); varosok.add(new Varos("Hajdúböszörmény", 31656, 520, 90)); varosok.add(new Varos("Hajdúszoboszló", 23354, 515, 110)); varosok.add(new Varos("Hajdúnánás", 18377, 517, 70)); varosok.add(new Varos("Balmazújváros", 18187, 509, 93)); varosok.add(new Varos("Püspökladány", 16251, 488, 122)); varosok.add(new Varos("Berettyóújfalu", 15886, 530, 131)); varosok.add(new Varos("Hajdúdorog", 9391, 524, 72)); varosok.add(new Varos("Nádudvar", 9212, 492, 112)); varosok.add(new Varos("Derecske", 9176, 532, 119)); //Heves varosok.add(new Varos("Eger", 55396, 410, 70)); varosok.add(new Varos("Gyöngyös", 32975, 370, 80)); varosok.add(new Varos("Hatvan", 22916, 343, 90)); varosok.add(new Varos("Heves", 11468, 103, 96)); varosok.add(new Varos("Füzesabony", 8350, 416, 81)); varosok.add(new Varos("Lőrinci", 6212, 343, 82)); varosok.add(new Varos("Pétervására", 2486, 384, 54)); //Jász-Nagykun-Szolnok varosok.add(new Varos("Szolnok", 75712, 390, 140)); varosok.add(new Varos("Jászberény", 28001, 367, 106)); varosok.add(new Varos("Törökszentmiklós", 23118, 417, 138)); varosok.add(new Varos("Karcag", 22549, 468, 124)); varosok.add(new Varos("Mezőtúr", 18837, 438, 155)); varosok.add(new Varos("Tiszafüred", 14295, 451, 94)); varosok.add(new Varos("Kisújszállás", 12744, 452, 133)); varosok.add(new Varos("Tiszaföldvár", 11873, 401, 160)); varosok.add(new Varos("Túrkeve", 10148, 451, 145)); varosok.add(new Varos("Kunszentmárton", 9996, 406, 171)); //Komárom-Esztergom varosok.add(new Varos("Tatabánya", 71758, 210, 100)); varosok.add(new Varos("Esztergom", 28357, 217, 78)); varosok.add(new Varos("Tata", 23591, 209, 91)); varosok.add(new Varos("Oroszlány", 20107, 207, 108)); varosok.add(new Varos("Komárom", 19537, 191, 83)); varosok.add(new Varos("Dorog", 12623, 248, 83)); varosok.add(new Varos("Nyergesújfalu", 7805, 231, 81)); varosok.add(new Varos("Kisbér", 7622, 178, 106)); //Nógrád varosok.add(new Varos("Salgótarján", 45055, 350, 50)); varosok.add(new Varos("Balassagyarmat", 17934, 305, 50)); varosok.add(new Varos("Bátonyterenye", 15198, 358, 58)); varosok.add(new Varos("Pásztó", 10319, 345, 65)); varosok.add(new Varos("Szécsény", 6719, 327, 49)); varosok.add(new Varos("Rétság", 3023, 289, 64)); //Pest varosok.add(new Varos("Budapest", 1777921, 290, 120)); varosok.add(new Varos("Érd", 55955, 260, 120)); varosok.add(new Varos("Cegléd", 37299, 350, 140)); varosok.add(new Varos("Vác", 32875, 290, 80)); varosok.add(new Varos("Gödöllő", 29455, 311, 96)); varosok.add(new Varos("Dunakeszi", 28977, 289, 93)); varosok.add(new Varos("Nagykőrös", 24967, 354, 153)); varosok.add(new Varos("Budaörs", 23893, 272, 111)); varosok.add(new Varos("Szigetszentmikós", 23093, 278, 123)); varosok.add(new Varos("Szentendre", 21952, 282, 89)); //Somgy varosok.add(new Varos("Kaposvár", 65600, 150, 220)); varosok.add(new Varos("Siófok", 22386, 185, 163)); varosok.add(new Varos("Marcali", 12700, 114, 197)); varosok.add(new Varos("Nagyatád", 12090, 107, 232)); varosok.add(new Varos("Barcs", 11998, 117, 259)); varosok.add(new Varos("Balatonboglár", 5886, 139, 178)); varosok.add(new Varos("Csurgó", 5723, 81, 229)); varosok.add(new Varos("Tab", 5033, 177, 182)); varosok.add(new Varos("Fonyód", 5019, 129, 181)); varosok.add(new Varos("Balatonlelle", 4901, 144, 176)); //Szabolcs-Szatmár-Bereg varosok.add(new Varos("Nyíregyháza", 113281, 540, 60)); varosok.add(new Varos("Mátészalka", 18757, 604, 57)); varosok.add(new Varos("Kisvárda", 18153, 579, 31)); varosok.add(new Varos("Tiszavasvári", 14375, 510, 59)); varosok.add(new Varos("újfehértó", 13559, 541, 74)); varosok.add(new Varos("Nyírbátor", 13452, 586, 69)); varosok.add(new Varos("Nagykálló", 10205, 557, 66)); varosok.add(new Varos("Vásárosnamény", 9183, 603, 40)); varosok.add(new Varos("Fehérgyarmat", 8870, 624, 53)); varosok.add(new Varos("Nagyecsed", 7046, 612, 66)); //Tolna varosok.add(new Varos("Szekszárd", 35810, 240, 230)); varosok.add(new Varos("Paks", 21178, 261, 194)); varosok.add(new Varos("Dombóvár", 20819, 188, 217)); varosok.add(new Varos("Bonyhád", 14762, 227, 226)); varosok.add(new Varos("Tolna", 12294, 253, 214)); varosok.add(new Varos("Tamási", 9891, 203, 192)); varosok.add(new Varos("Dunaföldvár", 9258, 267, 176)); varosok.add(new Varos("Bátaszék", 7046, 247, 237)); varosok.add(new Varos("Simontornya", 4730, 230, 181)); //Vas varosok.add(new Varos("Szombathely", 79753, 30, 130)); varosok.add(new Varos("Sárvár", 15846, 68, 129)); varosok.add(new Varos("Körmend", 12646, 33, 153)); varosok.add(new Varos("Celldömölk", 12014, 90, 129)); varosok.add(new Varos("Kőszeg", 11299, 30, 115)); varosok.add(new Varos("Szentgotthárd", 9076, 0, 158)); varosok.add(new Varos("Vasvár", 4745, 54, 149)); varosok.add(new Varos("Csepreg", 3412, 46, 114)); //Veszprém varosok.add(new Varos("Veszprém", 59848, 160, 150)); varosok.add(new Varos("Pápa", 33023, 120, 130)); varosok.add(new Varos("Ajka", 32317, 130, 150)); varosok.add(new Varos("Várpalota", 21597, 189, 136)); varosok.add(new Varos("Tapolca", 17994, 117, 167)); varosok.add(new Varos("Balatonfüred", 12724, 163, 160)); varosok.add(new Varos("Balatonalmádi", 7735, 176, 153)); varosok.add(new Varos("Zirc", 7467, 162, 130)); varosok.add(new Varos("Sümeg", 6964, 103, 157)); varosok.add(new Varos("Devecser", 5161, 118, 145)); //Zala varosok.add(new Varos("Zalaegerszeg", 60638, 50, 180)); varosok.add(new Varos("Nagykanizsa", 53541, 70, 210)); varosok.add(new Varos("Keszthely", 21540, 98, 178)); varosok.add(new Varos("Lenti", 8761, 25, 191)); varosok.add(new Varos("Zalaszentgrót", 8037, 82, 160)); varosok.add(new Varos("Letenye", 4630, 44, 211)); varosok.add(new Varos("Hévíz", 4347, 92, 176)); varosok.add(new Varos("Zalalövő", 3246, 32, 169)); varosok.add(new Varos("Zalakaros", 1391, 84, 199)); } // segéd osztály - a városok adatainak tárolásához public class Varos { private String nev; private int lakossag; private int[] koordinata; public Varos(String n, int l, int x, int y){ this.nev = n; this.lakossag = l; this.koordinata = new int[2]; this.koordinata[0] = x; this.koordinata[1] = y; } public String toString(){ return ("A varos neve: "+this.nev+", lakossaga: "+this.lakossag+", koordinatai: ("+this.koordinata[0]+", "+this.koordinata[1]+")"); } public String getNev(){ return this.nev; } public int getLakossag(){ return this.lakossag; } public int getXKoordinata(){ return this.koordinata[0]; } public int getYKoordinata(){ return this.koordinata[1]; } } }