Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#84

Re: [Tutorial] Quadratische Gleichungen vollständig lösen

  Alt 1. Apr 2010, 06:29
Na, mit LaTex sieht das doch gleich viel besser aus.

Das 'geniale' Verfahren von Gammatester ist gar nicht so genial, weil es unnötigen Code produziert und am Thema vorbei geht. Wir haben es hier mit einer Fallunterscheidung zu tun, die in der Mathematik auch entsprechend gekennzeichnet wird (große öffnende geschweifte Klammer und dann untereinander die Fälle). Entsprechend sollte der Pseudocode auch aussehen:
Delphi-Quellcode:
Case sign(Value) of
  -1 : ... ;
   0 : ... ;
  +1 : ... ;
End;
oder so (das berücksichtigt sogar die ist-gleich-Null Problematik);
Delphi-Quellcode:
Case CompareValue (Value,0) of
  -1 : ... ;
   0 : ... ;
  +1 : ... ;
End;
Ich finde das Tutorial wirklich gut, denn es zeigt, wie knifflig scheinbar banale Dinge werden können, wenn man sie richtig angeht.

Da die begrenzte Genauigkeit und die damit verbundenen Probleme ausführlich behandelt werden (das ist ja der Kern der Abhandlung), müsste Wolfgang folgerichtig (und um das Thema abzurunden) auch auf die 'Ist-Gleich-Null' Problematik näher eingehen.

Z.B. Führt folgende einfache Schleife unsinnigen Ergebnissen:
Delphi-Quellcode:
Var
  x : Double;

Begin
  x:= -0.2;
  While x < 0.1 do begin
    if (x<0) or (x>0) then
      Writeln (x,' ist ungleich 0')
    else
      Writeln(x,' ist gleich 0');
    x := x + 0.1;
  End
End
Wir erwarten nach zwei Durchläufen die Ausgabe '0 ist gleich 0'. Das wird aber nicht passieren.

D.h. muss man eben Werte, die sehr nahe bei 0 liegen, als 0 behandeln. Dabei ist die Grenze vom gewählten Datentyp abhängig.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat