http://www.FrankNStein.de/Smiley-Wolke.gif Hallöle Scryless,
Die Funktion von Min(), Abs() und Break hat ja Miri schon erklärt.
Ursprünglich sah die Schleife so aus:
Delphi-Quellcode:
{kürzen}
For I := 2 to Abs(ez) {oder Abs(en)} do
If (ez mod I2 = 0) and (en mod I2 = 0) Then Begin
ez2 := ez div I2;
en2 := en div I2;
End;
ez := ez2;
en := en2;
Dabei wird aber das Ergebnist mehrmals berechnet und die Schleife immer komplett durchlaufen - daher wurde das noch etwas beschleunigt:
Delphi-Quellcode:
{kürzen}
{1} For I := Min(Abs(ez), Abs(en)) downto 2 do
{2} If (ez mod I2 = 0) and (en mod I2 = 0) Then Begin
ez := ez div I2;
en := en div I2;
{3} Break;
End;
- Min(Abs(Z1), Abs(Z1)) sucht einfach die kleinste der beiden Zahlen, ohne das Vorzeichen zu beachten
Und dann wird in der Schleife (I) bis zur 2 runtergezählt
- prüft ob Nenner und Zähler durch die aktuelle Zahl (I) ohne Rest teilbar sind
- beendet die For-Schleife, sobald ein Ergebnis (GGT - Größter Gemeinsamer Teiler) gefunden wurde
Kannste mal sagen bei welcher Rechenaufgabe es hagt und eventuell nochmal dein Prog zeigen.
http://www.FrankNStein.de/Smiley-Kuss.gif * *
http://www.FrankNStein.de/Smiley-Spinne.gif * * *
http://www.FrankNStein.de/Smiley-Winken.gif