# int-Feld in zwei Felder aufteilen



## heidlero90 (12. Nov 2010)

hallo
in der uni wurde uns eine aufgabe gestellt mit unter anderem diesem unterpunkt:

Definieren Sie zwei int-Felder. Im Ersten sollen nur die Eintrage, die kleiner als
der Mittelwert sind, eingetragen werden, die restlichen Werte sollen im zweiten
Feld eingetragen werden. Geben Sie beide Felder wie unter 3. auf stdout aus.
Hinweis: Zahlen Sie zuerst die Eintrage die kleiner sind als der Mittelwert und
legen dann das Feld mit der entsprechenden Groeße an.

informatik is überhaupt nicht mein fall und ich weiß auch nicht was ich damit anfangen soll... in den vorlesungen hab ich auch nicht wirklich viel kapiert könnte mir bitte jmd helfen ich bin echt ahnungslos
falls es wichtig ist das feld dass wir davor definieren sollten enthält 10 zahlen


----------



## ARadauer (12. Nov 2010)

was studierst du den?

hast du den mittelwert schon?


----------



## heidlero90 (12. Nov 2010)

ich studier sowas ähnliches wie wirtschaftsingenieur bloß mit bissl mehr maschinenbau ;-)
den mittelwert vom 1.feld hab ich schon ja bloß keine ahnung was ich jetzt machen soll


----------



## SlaterB (12. Nov 2010)

poste doch bisschen Code, die gegebene/ frühere Array-Deklaration und wie du den Mittelwert erhälst

fange als nächstes mit 
> Definieren Sie zwei int-Felder. 
an, schon zu schwer?


----------



## ARadauer (12. Nov 2010)

jup genau,
machst dir deine zwei arrays.. dann iterierst du über deine felder, (was du ja kannst, das hast für den mittelwert schon gebraucht)
und wenn die zahl kleiner als der mittelwert dann ins eine und sonst ins andere einfügen...

das problem ist nun, wie fügst du ein? du hast einfach zwei weitere variablen die dir die akutelle position in den ergebnis arrays angeben. wenn du and die aktuelle stelle einfügst, dann erhöhst du diesen zähler...


----------



## heidlero90 (12. Nov 2010)

```
public static void main(String[] args) {
		int[] Feld = { 4, 12, 44, 2, 3837, 111, 27, 95, 9, 583 };
		System.out.print("Feld: ");
		for (int i = 0; i < 10; ++i) {
			System.out.print(" " + Feld[i]);

double summe = 0;
		for (int i = 0; i < Feld.length; i++)
			summe = summe + Feld[i];
		System.out.println("Mittelwert: " + summe / 2);
```

ich verstehe nicht wie ich alle werte die kleiner sind als dieser mittelwert in ein neues feld eingeben lassen kann. manuell klappts irgendwie auch nicht...


----------



## ARadauer (12. Nov 2010)

1. Variablen klein schreiben
2. Als Anfänger immer alle { und } machen.. die erst for wird nicht geschlossen

ach mittelwert ist die summe / 2?
Naja Mittelwerte gibt es ja einige, aber bei uns ist doch der Mittelwert der Durchschnitt oder? Summe / Anzahl ?


----------



## heidlero90 (12. Nov 2010)

du hast recht, ich muss natürlich durch 10 teilen
der code wie ich ihn reinkopiert hab funktioniert, hab nur den teil der von belang is genommen, die klammern sind nich das problem


----------



## heidlero90 (12. Nov 2010)

ja klar summe/anzahl weiß net was mich da geritten hat ^^also

```
int array = new int[anzahl werte kleiner mittelwert];
int array1 = new int[anzahl werte größer mittelwert];
for (int i = 0; i < Feld.length; i++) [code=Java]
oder? und dann?
```


----------



## SlaterB (12. Nov 2010)

[ JAVA] code [/ JAVA] heißt es, wie es in der roten Schrift steht, 
wenn man als anonymer nicht mehr editieren kann ist die Vorschau auch mal anzuschauen..

> anzahl werte kleiner mittelwert]
ist gar nicht so leicht, für den Anfang nimm lieber die Länge des Original-Arrays

in der Schleife dann für jedes Element entscheiden wohin es gehört, if/else sicher bekannt?


----------



## casio_O (12. Nov 2010)

Mir war heute langweilig... 


```
public class Test {

	public static void main(String[] args) {
		
		 int[] werte = { 4, 12, 44, 2, 3837, 111, 27, 95, 9, 583 };
		 
		 int mittelWert = 0;
		 
		 for (int i : werte ) {
			mittelWert += i;
		 }

		 mittelWert /= werte.length;
		 System.out.println( "Mittelwert: " + mittelWert );
		 
		 int k = 0;		 
		 for (int i : werte ) {
			 if( i < mittelWert ) k++;
		 }
		 
		 int[] feld1 = new int[k];
		 int[] feld2 = new int[werte.length-k];
		 
		 int i1 = 0;
		 int i2 = 0;
		 for ( int i : werte) {
			 if( i < mittelWert ) {
				 feld1[i1] = i;
				 i1++;
			 } else {
				 feld2[i2] = i;
				 i2++;
			 }
		 }
		 
		 System.out.println( "Werte < Mittelwert" );
		 for (int i : feld1 ) {
			System.out.println( i );
		 }
		 
		 System.out.println( "Werte >= Mittelwert" );
		 for (int i : feld2 ) {
				System.out.println( i );
		 }		 
		 
	}

}
```


----------



## heidlero90 (12. Nov 2010)

danke schon mal dafür, das hat mir viel geholfen. was muss ich für "werte" eingeben, das versteh ich nicht, sind rot.
und bei int : ...... weiß ich auch nicht was reinmuss...


----------



## SlaterB (12. Nov 2010)

> was muss ich für "werte" eingeben
wieso irgendwo was eingeben? das Array wird deklariert, werte ist der Name der Variablen wie Feld vorher bei dir

> for (int i : werte ) {
ist eine besondere Art der Schleife, kannst auch wieder for (int i= .. verwenden


----------

