For-schleife erklärung, hilfe?

... komplette Frage anzeigen

5 Antworten

Eine For-Schleife ist zunächst einmal eine Wiederholungsanweisung mit eine fest eingestellten Anzahl von Wiederholungen. In Deine Fall sind es 16. Die Bildung des Mittelwertes ist einfach und verlangt nur die 16fache Addition von Einzelwerten mit anschliessender Division durch 16, was ausserhalb der For-Schleife zu erfolgen hat.

Die Auffindung des Medianwertes ist schon etwas anspruchsvoller. Ein einfacher Weg wäre aber einfach mit jeder neu eingelesenen Zahl zu fragen, wie oft sie grösser ist als der bereits eingelesen Zahlenbestand. Wenn diese Frage 8mal mit "Ja" beantwortet wurde, dann hast Du Deinen Medianwert und kannst auf weitere 'Mediansuchen' verzichten. - Aber hier hast Du bereits eine Schleife-in-Schleife-Konstruktion.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von DarkLea
04.11.2016, 11:26

wieso denn 16 wiederholungen? ich habe sechzehn zahlen, die jedoch nur von 1-7 gehen. es kommen also manche auch doppelt vor. und für den median muss ich die zahlen ja nach größe geordnet haben odernichg?

0

Hallöchen DarkLea,

der grundsätzliche Aufbau einer normalen for-schleife ist beispielsweise folgender:

for(int i = 0; i <= arr.length(); i++)
{
     ...
}

Hierbei ist der Kopf unterteilt in:

  • int i = 0; - Hier wird eine Variable angelegt und ein Wert zugewiesen. Diesen Wert kannst du als deinen Startwert ansehen
  • i <= arr.Length(); - Dies ist die Abbruchbedingung der Schleife. Ist diese Ausdruck wahr, wird der Code nicht mehr ausgeführt und die Schleife ist zu Ende
  • i++ - Dies ist die standardmäßig auszuführende Aktion, sobald ein Schleifendurchlauf abgeschlossen ist.

Leider hast du nicht erwähnt, welche Sprache du nutzt, daher nehme ich jetzt einfach mal Java her, um dir ein Beispiel zu zeigen. Folgend der Inhalt einer Methode:

public double getMValue()
{
int[] arr = new int[16];
int mwert = 0; // For-Schleife, um das Array zu befüllen. Zahlenfolge ist dann: 0 1 4 9 16 25 ... for(int i = 0; i < arr.length(); i++) {    arr[i] = i*i; } // For-Schleife, um den Mittelwert zu errechnen for(int i = 0; i < arr.length(); i++) {    mwert += arr[i]; } mwert = mwert / arr.length(); return mwert; }

Ich hoffe ich konnte dir helfen. Bei Rückfragen antworte gerne auf meinen Kommentar!

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von DarkLea
04.11.2016, 11:21

ich programmier in c++. wie kommst du denn auf die zahlenfolge?

0
Kommentar von SirNik
04.11.2016, 11:28

Tekumi, Anmerkung zu Punkt "i <= arr.length". 1) length ist eine Variable bei einem Array in Java und keine Methode (bei String ist es eine Methode) und 2) du schriebst dass abgebrochen wird, wenn die es wahr ist, aber es wird natürlich abgebrochen, wenn def logische Ausdruck falsch ergibt. Dies ist eine Anmerkung um die Fragestellerin nicht zu verwirren, wenn Sie bei Tests Fehler entdeckt. und so :D

0

Eine For-schleife kann man benutzen, wenn man eine Aktion für jedes einzelne Objekt in einer Liste oder einem Array ausführen will.

Wie du eine for bzw. foreach-Schleife verwendest, könntest du herausfinden, indem du einfach bei YouTube nach der for-Schleife mit der Benutzen Programmiersprache suchst.

In C# würde das so aussehen:

int a;
int Mittelwert;
foreach(int i in Array)
{
a = a + i;
}
Mittelwert = a / 16
Antwort bewerten Vielen Dank für Deine Bewertung

[Notizen] In diesem Bsp. Wird die Schleife 10 mal widerholt

for [widerholt etwas mehrmals] (Variable = 0; Variable < 10 [Wenn die Variable unter 10 ist, dann raus aus der Schleife] ; Variable++ [Variable wird bei jeder Widerholung +1 größer [++=+1 --=-1 +10=+10 [wenn Variable++ nicht funktioniert, dann benutze Variable = ++]]]{ Befehle in der Schleife}

Antwort bewerten Vielen Dank für Deine Bewertung

Ist die Array-Länge nur ein Beispiel oder hat das Array immer 16 zahlen?

Ich würde es so machen – allgemein formuliert (array.length, sollte sich auch durch eine fixe Zahl ersetzen lassen):

mittelwert = 0;

for  i <- 0 bis array.length {
mittelwert = mittelwert + array[i]
}

mittelwert = mittelwert / array.length;

if ( array.lenght modulo 2 == 0) {
median = array[array.lenght/2 -1] + array[array.lenght/2];
median = median / 2;
}

else {
median = array[array.lenght/2 - 0.5]
}


Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von DarkLea
04.11.2016, 11:13

ist nur ein beispiel. was genau macht den die for-schleife und welche drei werte (initialisierung, bedingungen, inkrement) muss man eintragen? also woher weiß ich was ich da reinschreiben muss?

0

Was möchtest Du wissen?