mOrt.java 14/Nov/2003 /*********************************************************************** * Module: mOrt.java * Author: Saim Sert * Created: Mittwoch, 12. November 2003 * Purpose: Defines the Class mOrt ***********************************************************************/ import java.util.*; public class mOrt { /** @param args */ public static void main(String[] args) { int anzahl = (args.length > 0)? Integer.parseInt(args[0]) : 0 ; char modus = (args.length == 2)? args[1].charAt(0) : 'x' ; System.out.println("\tSimulation einer Standortverwaltung\n\n") ; if( anzahl >= 3 && anzahl <=100 && (modus == 'u' || modus == '+' || modus == '-') ) { // cStandorte standorte = new cStandorte(anzahl,modus); } else { anzahl = 10; modus = 'u';//weg cStandorte standorte = new cStandorte(anzahl,modus);//weg System.out.println("\n\tFalsche Parameter !"); System.out.println("1. Parameter: Anzahl der Standorte | 0<=anzahl<=100"); System.out.print("2. Parameter: Sortierreihenfolge | 'u' Name,"); System.out.print(" '+' Strecke Auf, '-' Strecke Ab\n"); } System.out.print("\n\tPrgramm wird beendet - ") ; } } 1 of 1 cStandorte.java 14/Nov/2003 /*********************************************************************** * Module: cStandorte.java * Author: Saim Sert * Created: Mittwoch, 12. November 2003 * Purpose: Defines the Class cStandorte ***********************************************************************/ import java.io.*; import java.util.*; import java.lang.Math; public class cStandorte { private int zeiger = 0; private int[] order = null; private cOrt[] standort; /** @param index */ private void createStandort(int index) { int x,y; boolean ok = true ; do { x = (int) (Math.random()*1200); y = (int) (Math.random()*1200); for (int i = 0; i < zeiger || (!ok); i++) ok = calcDistanz(x,y,standort[i].getX(),standort[i].getY()) < 1200; } while(!ok); standort[index].setName("Ort_" + (index+1)); standort[index].setX(x); standort[index].setY(y); } /** @param x1 * @param y1 * @param x2 * @param y2 */ private int calcDistanz(int x1, int y1, int x2, int y2) { double deltaX = (x1-x2); double deltaY = (y1-y2); int temp = (int) Math.sqrt(Math.pow(deltaX,2.00)+Math.pow(deltaY,2.00)); return temp; } private void updateDistanz() { for (int i = 0; i < standort.length; i++) { int summe = 0; for (int j = 0; j < standort.length; j++) summe += calcDistanz(standort[i].getX(),standort[i].getY(), standort[j].getX(),standort[j].getX()); standort[i].setDistanz(summe); } } private void printStandort() { int x, y, j = 0 ; System.out.print("\tName \t (X-Koord.,Y-Koord.) \t Strecke\n") ; for(int i = 0; i < standort.length; i++) { j = order[i]; System.out.print("\t" + standort[j].getName() + "\t : ") ; System.out.print("(" + standort[j].getX() + ",") ; System.out.print(standort[j].getY() + ")\t\t") ; System.out.print("-> " + standort[j].getDistanz() + "\n") ; } } /** @param modus */ private void sortStandort(char modus) { if (modus == 'u') { for(int i = 0; i < order.length; i++) order[i] = i; } else if (modus == '+' || modus == '-') { double[] streckenS = new double[order.length]; double[] streckenU = new double[order.length]; for(int i = 0; i < order.length; i++) 1 of 2 cStandorte.java 14/Nov/2003 streckenS[i] = standort[i].getDistanz(); System.arraycopy(streckenS, 0, streckenU, 0, streckenS.length); Arrays.sort(streckenS); for(int i = 0; i < streckenS.length; i++) { for(int j = 0; j < streckenU.length; j++) if(streckenS[i] == streckenU[j]) order[i] = j; } } if (modus == '-') { int tmp; for( int i = order.length - 1, j = 0; i > j; --i, ++j ) { tmp = order[i]; order[i] = order[j]; order[j] = tmp; } } } /** @param laenge * @param modus */ public cStandorte(int laenge, char modus) { standort = new cOrt[laenge]; order = new int[laenge]; for (int i = 0; i < standort.length; i++) { standort[i] = new cOrt(); createStandort(i); } updateDistanz(); sortStandort(modus); printStandort(); } } 2 of 2 cOrt.java 14/Nov/2003 /*********************************************************************** * Module: cOrt.java * Author: Administrator * Created: Donnerstag, 13. November 2003 18:20:00 * Purpose: Defines the Class cOrt ***********************************************************************/ import java.util.*; public class cOrt { private String name; private int x; private int y; private int distanz; public cOrt() { name = null; x = 0; y = 0; distanz = 0; } public String getName() { return name; } /** @param name */ public void setName(String name) { this.name = name; } public int getX() { return x; } /** @param x */ public void setX(int x) { this.x = x; } public int getY() { return y; } /** @param y */ public void setY(int y) { this.y = y; } public int getDistanz() { return distanz; } /** @param distanz */ public void setDistanz(int distanz) { this.distanz = distanz; } } 1 of 1