Funktion MAX

Deine Funktion heißt aber max und nicht return_GRENZE. Welche Werte kann also deine Funktion als Ergebnis ausspucken?
 
Feld[1] war der erste Wert des Feldes und Feld[10] war der letzte Wert des Feldes. Die Werte dafür konnten je nach dem eingelesenen Feld verschieden sein.
 
Und jetzt geh noch mal zurück zum ersten Teil der Aufgabenstellung und schau nach, was die Funktion max macht.
 
Richtig. Mit diesem Gedanken solltest du noch einmal die Funktion max durchgehen und schauen, ob du da etwas ähnliches findest. Dann wirst du auch sehen, dass die Funktion nicht den Index zurückliefert, sondern den größten Wert des Feldes innerhalb der in von und bis angegebenen Grenzen.
 
Richtig. Welche Werte können also nach der ersten Zeile von D in w stehen?
 
Nein, GRENZE = 10 = konst. Aber Feld[10] kann beliebig sein. Genauso wie die anderen Einträge von Feld.
 
Ich wollte schon sagen, wenn GRENZE nicht konstant wäre, hätten ja die anderen Aufgaben keinen Sinn ergeben ;)

Aber ich habe es immer noch nicht so ganz gecheckt in Bezug auf D)
 
Du kannst ja wieder ein Beispielfeld (z.B. das von vorhin aus Post #12) mit zehn Einträgen hernehmen und Schritt für Schritt ausprobieren, was in D passiert. Und dann musst du dir überlegen, was bei beliebigen Eingangsdaten passieren könnte.
 
Ok, aber es gibt doch in D) nur

w := max(Feld, 1, 10)

verstehe nicht ganz, was und wo man andere Werte eingeben kann?

(Kann auch sein, dass ich mit beiden Füßen auf der Leitung stehe ;))
 
Gut, mach bitte folgendes: Nimm das Feld aus #12 und rufe mit diesem Feld die Funktion max wie in Aufgabe D angegeben auf. Schreibe jeden Schritt in Funktion max hier auf und welche Werte die Variablen ParFeld, von, bis, Wert und i einnehmen.
 
meinst du im Funktionsblock (siehe Foto) Bildschirmfoto vom 2017-10-29 23-20-41.png
 
Jep, woanders kommt ParFeld ja nicht vor.
 
ohje das ist schwer...ich verstehe noch nicht was ich tue ;)

Code:
begin
      Wert := -20;
      for i := -20 + 1 to 10 do
        if ParFeld[i] > -20 then
          Wert := ParFeld[i];
      max := Wert
  end;
 
Dein Funktionsaufruf sieht so aus, dass von = 1 und bis = 10 ist. Warum ist bei dir von jetzt -20?
 
Hier hast du schon mal einen Fehler. ParFeld[von] ist nicht identisch mit von. Ruhig mehr Zwischenschritte:
Funktionsaufruf: w:= max(Feld, 1, 10)
Funktionsausführung:
begin
Wert:=ParFeld[von] = ParFeld[1] = -20
for i := von +1 = 1+1 = 2 to bis = 10
...
 
Zurück
Oben