# Differenz-Methode mit Array lösen



## chb89 (26. Jul 2010)

Hallo liebes Forum!

ich habe ein kleines Problem mit einer Schulaufgabe, die ich bis morgen lösen muss. Ich hoffe ihr könnt mir helfen. Wir stehen noch ganz am Anfang von java, ihr werde euch wohl über die Aufgabe lustig machen

--------

Aufgabe:
Der differenz-Methode wird ein Array x übergeben. Zurückgegeben werden soll die Differenz aufeinanderfolgender Werte.
Berechnungsmethode: Nachfolger - Vorgänger
Mit den Zahlen aus dem Beispiel: 2,4−(−1,5)=3.9 und 3,8−2,4=1,4 usw.

Beispiel:
double[] a = {-1.5, 2.4, 3.8, 4.3, 6.8};
double[] b = differenz(a); Ergebnis: b= {3.9, 1.4, 0.5, 2.5}
Hinweis: Überlegen Sie genau, welche Größe das Array y haben muss.
Hinweis: Rechnen Sie im Quelltext mit den Variablen und nicht mit den konkreten Zahlen aus dem Beispiel!


1 public double[] differenz(double[] x) {
2 double[] y = ________________________________________
3 _______________________________________________________
4 _______________________________________________________
5 _______________________________________________________
6 _______________________________________________________
7 _______________________________________________________
8 _______________________________________________________
9 _______________________________________________________
10 _______________________________________________________
11 _______________________________________________________
12 _______________________________________________________
13 _______________________________________________________
14 _______________________________________________________
15 return y;
16 }


----------



## faetzminator (26. Jul 2010)

chb89 hat gesagt.:


> Hinweis: Überlegen Sie genau, welche Größe das Array y haben muss.


Welche Grösse muss denn Array y haben  ?

Ansonsten sei noch [c]Math.abs()[/c] erwähnt, das gibt dir den absoluten (positiven) Wert einer Zahl zurück:

```
Math.abs(5 - 1); // 4 -> 4
Math.abs(2 - 4); // -2 -> 2
```


----------



## Marco13 (26. Jul 2010)

chb89 hat gesagt.:


> ...ihr werde euch wohl über die Aufgabe lustig machen



Weniger über die Aufgabe an sich, als eher über die Aufgaben_stellung_:



> Hinweis: Rechnen Sie im Quelltext mit den Variablen und nicht mit den konkreten Zahlen aus dem Beispiel!



Da hat wohl jemand aus Erfahrung gelernt 


Aber irgendwelche Ansätze solltest du schon posten...

EDIT: *grübel* ... wo man da jetzt Math.abs brauchen soll? ... :bahnhof:


----------



## faetzminator (26. Jul 2010)

Marco13 hat gesagt.:


> EDIT: *grübel* ... wo man da jetzt Math.abs brauchen soll? ... :bahnhof:



für [c]y_ = Math.abs(x - x[i + 1]);[/c]  ?_


----------



## Landei (26. Jul 2010)

Da steht nichts von abs in der Aufgabenstellung, nur von der normalen Differenz (was auch dem Beispiel entspricht)


----------



## chb89 (26. Jul 2010)

Danke für die Lösung. Ich glaube das geht aber schon über unsere Verhältnisse hinaus

Also ich als Leihe würde erstmal eine for schleife machen. Wäre das richtig? int i=0;i<x<;i++ oder so und dann x - x-1 oder so rechnen.


----------



## faetzminator (26. Jul 2010)

Landei hat gesagt.:


> Da steht nichts von abs in der Aufgabenstellung, nur von der normalen Differenz (was auch dem Beispiel entspricht)



Ups, da habt ihr recht. In dem Beispiel werden die Zahlen immer grösser...


----------



## chb89 (26. Jul 2010)

kann das jemand? es ist wichtig


----------



## Marco13 (26. Jul 2010)

Ja, eine for-Schleife ist schonmal nicht falsch. Schreib' einfach hin, was du denkst, lies ein bißchen, und probier ein bißchen, und frag' dann nochmal nach (und poste, was du bis dahin gemacht hast). Ist wirklich nicht viel: Eine for-Schleife, insgesamt 5 Zeilen....


----------



## PaSch (26. Jul 2010)

```
public class array_test {

	public static void main(String[] args) {
		
		double[] a = {-1.5, 2.4, 3.8, 4.3, 6.8};
		double[] b = differenz(a);
		
		int i;
		for (i=0; i<b.length; i++) {
			System.out.println(b[i]);
		}
		
	}
	
	public static double[] differenz(double[] x) {
		int laenge = x.length - 1;
		double[] y = new double[laenge];
		
		int i;
		for (i = 0; i<laenge; i++) {
			y[i] = x[i+1] - x[i];
		}
		return y;
	}

}
```

Viel Spaß damit!

Bei Gefallen freue ich mich über ein [Danke].


----------



## chb89 (26. Jul 2010)

prefekt!! Danke!


----------



## Landei (26. Jul 2010)

Ich glaube PaSch meint den formschönen Button mit dem gelben Daumen nach oben...


----------



## Eldorado (27. Jul 2010)

Ich will ja keine Miesmacher sein ... aber das Forum hat als wichtige Regel "Es werden keine Hausaufgaben gemacht" und man hilft dir(chb89) auch nicht, da dir dann bei späteren Aufgabenstellungen, dass Wissen bzw die Erfahrung fehlt. Und es schaut denke ich auch keiner auf die "Danke" im Profil PaSch(ich will dir nicht unterstellen, dass es dir darum geht, du hilfst im damit halt nicht wirklich...)


----------



## SlaterB (27. Jul 2010)

niemand kann anderen Menschen vorschreiben was sie zu tun haben,
ich schätze mal fürs Vorsagen wird auch in diesem Forum niemand gesperrt 

wer verraten will, wird nicht gehindert, seine Schlüsse muss jeder selber ziehen,
mit 3 Beiträgen ist ja noch Lernzeit, bei 3000 Beiträgen richtet sich das gewiss ein


----------



## Eldorado (27. Jul 2010)

War auch nicht mein Ziel, dass er gesperrt wird. Wollte nur darauf aufmerksam machen. Das er erst so wenige Beiträge hat hab ich nicht gesehen.

Achja: gz zu 20.000 Beiträgen


----------

