LX: for-schleife funktioniert nicht

Beitrag lesen

Hallo!

Schade, dass Du unseren Rat offenbar immer noch nicht komplett beherzigt hast, aber diesmal sieht die Funktion fast so aus, als könnte sie sogar einen Zweck erfüllen, auch wenn sich dieser beim Lesen nicht wirklich erschließt.

Allein zum Spaß habe ich sie mal analysiert. Gleich zu Anfang: Du deklarierst die Funktion mab, die Du in ihrem eigenen Block als Float-Variable überschreibst. Es funktioniert zwar, verknotet aber schnell die Gehirnwindungen. Wenn Du ein Ergebnis berechnen willst, nehme Variablennamen wie "result" oder "ergebnis".

Dann stelle ich fest, dass Du zu überflüssigen Zeilen neigst wie bspw. "var i[Semikolon fehlt] for (i = 0..." - an dieser Stelle macht es den Code eher weniger übersichtlich und bedeutet zusätzliche Möglichkeiten für Fehler wie etwa das vergessene Semikolon. Deine Schleife zählt von 0 bis 99.9 in 0.1er Schritten.

Als nächstes initialisierst Du die Integervariable a mit der Zahl 1. Im gesamten Code ändert sich diese Zahl nicht - schlimmer noch, Du teilst durch diese 1 an unzähligen Stellen - das Ergebnis bleibt immer 1 und wird sich nicht ändern. Immerhin hast Du an dieser Stelle die Semikolons nicht vergessen - Du machst Fortschritte!

Die Variable b wird in der Schleife auf i gesetzt, was die Frage aufwirft, warum Du nicht gleich i verwendest, da auch an b im Zuge der Abfragen nichts verändert wird. Nun die erste Bedingung: 1 <= 1/[0 - 99.9] && 1 <= (1 + [0 - 99.9] - diese Bedingung trifft bei b=0 zu und sonst nie. In diesem Fall ist das Ergebnis 1.

Schon nach dem ersten Schleifendurchlauf kommen wir zur zweiten Abfrage. Diese trifft bei allen Zahlen ab 1 zu. Das Ergebnis ist 1/i.

Damit kommen nur die Zahlen 0.1 - 0.9 überhaupt in die dritte Abfrage - und erfüllen deren Bedingung nicht, daher bekommst Du an dieser Stelle auch kein korrektes Ergebnis, denn mab ist innerhalb der Funktion bereits auf 1 gesetzt worden.

Jetzt schließt Du Abfragen und for-Schleife. Bitte verzichte auf die Semikolons nach den geschweiften Klammern - die sind an dieser Stelle nicht nur fehl am Platze, sondern sehen so aus wie gewollt und nicht gekonnt; ein Anblick, der die metaphorische Entsprechung von Fingernägeln, die über die Tafel der geschundenen Programmiererseele kratzen, darstellt.

Bitte, sei so nett und formatiere Deinen Code außerdem in Zukunft so, dass man ihn lesen kann, ohne die überflüssigen Leerzeilen und vielleicht mit dem einen oder anderen Kommentar, in dem steht, was Du Dir von dem darunterstehenden Befehl erhoffst. Das macht Dir und uns das Leben auf Dauer wesentlich einfacher und Du bekommst schneller Hilfe.

Gruß, LX

--
X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: Unusual
X-Please-Search-Archive-First: Absolutely Yes