# DistanzMatrix



## tomtom88271 (19. Jan 2012)

ja..., Hi.
ich brauchert hilfe bzgl meines programms. 
wir schreiben nächsten montag eine prüfung und zwar über das ungefähre thema / schlagwörter:

2D-Array und dieses in eine DistanzMatrix einlesen. Ich vermute man muss längen- und breitengrad einen speziellen Ort zuweisen können. aber ich steh einfach total aufm schlauch mit der eingabe und dem einlesen in das array. die methode für das umrechnen mit dem erdradius hab ich schon (aus dem internet).

bin so a weng verzweifelt und ihr seids eig mei letzte hilfe, so irgendwie.

wäre nett, auch wenn ich nich so professionell einen code hier implemetiert habe, wen mir da jemand so ein paar zeilen schreiben könnte...

Lehrer meinte, es kommen 3 Methoden dran...eine sehr schwere (ich tippe das is die geodatenumrechnung) und 2 andere...weiss nicht genau, was des sein könnte.

auf jeden hilfe wäre ich sehr dankbar.

grüße
euer verzweifelter tom


----------



## tomtom88271 (19. Jan 2012)

Die Eingabe soll durch den Benutzer geschehen, also keine Beispieldaten


----------



## Final_Striker (19. Jan 2012)

Hast du auch eine konkrete Frage zu dem, was du nicht verstehst?


----------



## tomtom88271 (19. Jan 2012)

es fängt eigentlich damit an, dass ich nicht genau weiss wie längengrad1, breitengrad1, längengrad2, breitengrad2, in ein array eingelesen werden müssen (durch eine b-eingabe). und wie ich in dem bestehenden Array eine weitere spalte mit dem richtigen ort erstellen kann bzw wie ich überhaupt das array aufrufen kann...


```
public static double distance(double breitengrad1, double laengengrad1, double breitengrad2, double laengengrad2) 
	{
			
			double EARTH_RADIUS_KM = 6372.0;
			double a1 = Math.toRadians(breitengrad1);
			double b1 = Math.toRadians(laengengrad1);
			double a2 = Math.toRadians(breitengrad2);
			double b2 = Math.toRadians(laengengrad2);
			double d = Math.acos(Math.cos(a1) * Math.cos(b1) * Math.cos(a2)
					* Math.cos(b2) + Math.cos(a1) * Math.sin(b1) * Math.cos(a2)
					* Math.sin(b2) + Math.sin(a1) * Math.sin(a2));	
			return d * EARTH_RADIUS_KM;
```
ein versuch der eingabemethode:

```
public static double[] Eingabe (double longitude, double latitude) 
	{    
	      double hLat = StdInput.readDouble ("Breitengrad ? ");
	      double hLong = StdInput.readDouble ("Längengrad ? ");
	      return new double[] {hLat, hLong};
	}
```



ich hab z.b. das, wie schaut die eingabemethode dazu aus ?!

edit: vor allem soll es ja eine matrix, also ein 2D-array darstellen ...:/


----------



## XHelp (19. Jan 2012)

tomtom88271 hat gesagt.:


> bin so a weng verzweifelt und ihr seids eig mei letzte hilfe, so irgendwie.


Musste das 3 mal lesen...

Naja, wie dem auch sei: wenn du konkrete Fragen hast, dann kannst du die ja hier stellen. Wenn du jemanden suchst, der für die ein Programm schreibt, dann ist dein Gesuch in der Jobbörse besser aufgehoben.


----------



## tomtom88271 (19. Jan 2012)

XHelp hat gesagt.:


> Musste das 3 mal lesen...
> 
> Naja, wie dem auch sei: wenn du konkrete Fragen hast, dann kannst du die ja hier stellen. Wenn du jemanden suchst, der für die ein Programm schreibt, dann ist dein Gesuch in der Jobbörse besser aufgehoben.



das hab ich mir leider gedacht, dass das kommt...dennoch danke für deine mühe, dass du es 3 mal gelesen hast...war halt ein wenig bayerisch geschrieben..

schönen abend.


----------



## Final_Striker (19. Jan 2012)

tomtom88271 hat gesagt.:


> es fängt eigentlich damit an, dass ich nicht genau weiss wie längengrad1, breitengrad1, längengrad2, breitengrad2, in ein array eingelesen werden müssen (durch eine b-eingabe). und wie ich in dem bestehenden Array eine weitere spalte mit dem richtigen ort erstellen kann bzw wie ich überhaupt das array aufrufen kann...



Ich sehe in deinem Programm kein Array.

Die Methode berechnet die Distanz und gibt diese zurück.


----------



## tomtom88271 (19. Jan 2012)

ja das war das Problem!
wie schreibe ich diese methode um, dass l1,b1 und l2,b2 in einem array zurückgegeben werden


----------



## tomtom88271 (19. Jan 2012)

ich zolle den informatikern großen respekt zu..aber eins versteh ich ned...
bevor ich jez da ewig rumschreib, könnte man das programm doch schnell hinklatschen.
ich vermute, dass dauert für euch profis genau 5min...finds a weng schade...jeder is ma in ner schwierigen situation und jeder braucht ma hilfe, auch wenns von fremden ist..naja...da ich hier nich wirklich weiter komme..kann der thread geschlossen werden.
wünsch euch was
ciao
tom


----------



## Marcinek (19. Jan 2012)

Das Problem ist, dass keiner dein Problem versteht, weil du dir keine zwei Minuten nimmst zu verstehen, was du machen willst / sollt.

Wieso sollte dann jemand für dich zeit opfern? :shock:


----------



## diggaa1984 (19. Jan 2012)

tomtom88271 hat gesagt.:


> es fängt eigentlich damit an, dass ich nicht genau weiss *wie* [ich frag mich warum überhaupt] längengrad1, breitengrad1, längengrad2, breitengrad2, in ein array *eingelesen werden müssen* (*durch eine b-eingabe* [was das??]). und *wie* ich in dem bestehenden Array *eine weitere spalte mit dem richtigen ort erstellen kann*[arrays sind fix, und ORT != double Datentyp, wozu ort im selben Array?] bzw wie ich überhaupt das array aufrufen kann ...
> 
> ich hab z.b. das, wie schaut die eingabemethode dazu aus ?! [Aufgabenstellung, Eingabe woher?]
> edit: vor allem soll es ja eine matrix, also ein 2D-array darstellen ...:/




Also ich kann mir beim besten willen keinen Reim auf die eigentliche Aufgabe machen. Die Angaben sind für mich irgendwie wirr. Das Aufgaben aus Schule und Uni nicht immer Sinn machen müssen ist mir bekannt, kenne ich mitlerweile auch zu Hauf, aber hier verlässt mich meine Kreativität die Aufgabe zu interpretieren. ???:L

Formuliere mal ganz genau, was wo wie übergeben, erstelle, manipuliert, zurückgegeben werden soll, dann ist man auch in der Lage in 5min mal 10 Zeilen zu posten, die vielleicht helfen.


----------



## tomtom88271 (19. Jan 2012)

eigentlich hab ich es explizit geschrieben

na gut, nochmal:
ich muss ein programm schreiben, dass aus einem 2D-Array den längen- und breitengrad und den dazugehörigen ort ausliest und diese daten, natürlich von 2 oder mehr orten vergleicht und eben mit diesen längen- und breitengrad die distanz ausrechnet. 
3 Methoden sollten es sein. Es gibt keine Beispieldaten, sondern es werden die Daten eingelesen, die der Benuter eingibt.

mein banales problem is einfach des, dass ich nicht weiss, wie die codezeilen schreiben muss, das mir das programm ausspuckt: benutzer hat längengrad und breitengrad eingegeben, speicher mir das ins array, gib mir den ort dazu an und rechne die distanz aus, sobald ein 2 ort dazugekommen ist.theoretisch kann ich das, aber mir fehlts einfach am programierkenntnisse. deswegen wollte ich schnelle hilfe haben...na gut


----------



## langhaar! (19. Jan 2012)

tomtom88271 hat gesagt.:


> naja...da ich hier nich wirklich weiter komme..kann der thread geschlossen werden.



Liebe Moderatoren,

da wurde doch tatsächlich dem Threaderöffner kein Programm geschrieben, obwohl dieser Thread schon 45 Minuten lang besteht.
Kommt doch bitte unmittelbar dem Wunsch des TE nach und schließt den Thread.


----------



## tomtom88271 (19. Jan 2012)

@langhaar: du bist a ganz a netter 

es wurde explizit nochmals gefragt und ich hab veersucht es genau darzustellen..daher kann der thread eig da bleiben und sehr wohl hab ich einen code gepostet!


----------



## tomtom88271 (19. Jan 2012)

```
public static double[][] Eingabe (double longitude, double latitude,double longitude1, double latitude1) 
	{    
		double[] a = new double[]{};
	      for (int i=0; i<a.length; i++){
	    	  for (int j=0; j<a[i].length;j++)
	    	  {
	    		  latitude1 = StdInput.readDouble ("Breitengrad ? ");
	    	      longitude1 = StdInput.readDouble ("Längengrad ? ");
	    	  }
		
	    	  double[] b = new double[]{};
		      for (int k=0; k<b.length; k++){
		    	  for (int l=0; l<b[k].length;l++)
		    	  {
		    		  latitude = StdInput.readDouble ("Breitengrad1 ? ");
		    	      longitude = StdInput.readDouble ("Längengrad1 ? "); 
		    	  }

	      return new double[a][b] ;
	}
```

er spuckt mir natürlich fehler aus, unter anderem, dass ich unten bei return die werte a und b auf integer wechseln sollte..aber das darf ja nicht sein, weil längengrad sollte ja schon double sein...


----------



## Final_Striker (19. Jan 2012)

Abgesehen von den Fehlern macht deine Methode macht überhaupt keinen Sinn.

Du solltest dir vielleicht nach einmal die Grundlagen zu Arrays anschauen.


```
// einfaches Array
		double[] arr1 = new double[3]; // Array erstellen
		arr1[0] = 1; // schreiben
		double var1 = arr1[0]; // lesen
		
		// 2dim Array
		double[][] arr2 = new double[2][3]; // Array erstellen
		arr2[0][0] = 1; // schreiben
		double var2 = arr2[0][0]; // lesen
```


----------



## JanHH (20. Jan 2012)

Veröffentliche doch mal den exakten Wortlauf der Aufgabenstellung, oder kopier sie einfach hier rein. Ist einfach unklar was genau da programmiert werden soll.

[altklug]
Ansonsten sind Prüfungen nunmal dazu da, festzustellen, wer ein bestimmtes Thema kann und wer nicht, und wenn die Unkenntnis so gross ist wie bei Dir fragt man sich schon, wie kann das sein. Arrays sind nun nicht gerade kompliziert und wenn Dir solche absoluten, offenbar auch vom Professor vorausgesetzten Grundkenntnisse fehlen, will man nicht so recht zum Erfüllungsgehilfen werden, sondern Du würdest da auch völlig zu Recht durch die Prüfung fallen.
[/altklug]

Bringt ja ausserdem auch nix wenn Dir das hier jemand programmiert und das dann zwar läuft aber Du das Programm trotzdem nicht verstehst.


----------

