Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Brüche kürzen- wieder einmal (https://www.delphipraxis.net/82722-brueche-kuerzen-wieder-einmal.html)

Flare 19. Dez 2006 17:20

Re: Brüche kürzen- wieder einmal
 
Also unter formatiert verstehe ich zwar etwas anderes, habe es mir aber tortzdem mal angeschaut. Du hattest einen Fehler in der Procedure Kuerze, so müsste sie richtig aussehen:
Delphi-Quellcode:
Procedure TForm1.kuerze(a,b:real;var c,d:real);
var teiler:real;
begin
     teiler:=a;
     while (frac(a/teiler) <> 0) or (frac(b/teiler) <>0) do // mod mit frac ersetzt
           teiler:=teiler-1;
     c:=a/teiler;
     d:=b/teiler;
end;
Du kannst den Befehl mod nicht auf den Typ real anwenden, sondern nur auf Ganzzahlen wie Integer, Byte und Word.
Ob dein Programm durch meine Veränderung richtige Werte liefert habe ich aber nicht überprüft.


Flare

marabu 19. Dez 2006 17:22

Re: Brüche kürzen- wieder einmal
 
Hallo,

das ist wie Augenpulver: Edit1 und Edit2 sind nunmal keine leicht zu lesenden Komponentennamen. Außerdem musst du nicht alle möglichen Teiler probieren, wenn du zuerst den größten gemeinsamen Teiler bestimmtst:

Delphi-Quellcode:
function GCD(n1, n2: Integer): Integer;
begin
  if n2 = 0
    then Result := n1
    else Result := GCD(n2, n1 mod n2);
end;

procedure Normalize(var Numerator, Denominator: Integer);
var
  n: Integer;
begin
  if Numerator <> 0 then
  begin
    n := GCD(Numerator, Denominator);
    Numerator := Numerator div n;
    Denominator := Denominator div n;
    if Denominator < 0 then
    begin
      Numerator := - Numerator;
      Denominator := - Denominator;
    end;
  end else
  begin
    Numerator := 0;
    Denominator := 1;
  end;
end;
Du musst dir aber zuerst mal ein Konzept ausdenken, exakt wann du von Integer- auf Float-Arithmetik wechselst.

Freundliche Grüße vom marabu

Spynx 19. Dez 2006 17:30

Re: Brüche kürzen- wieder einmal
 
JAAA FLARE DANKE DANKE DANKE!!! DAS WARS WAS ICH BRACUHTE!!!! :hello: :hello: :hello: :hello: :hello: :cheers:

:dp: :dp: :dp: :dp: :dp:

edit: wie kann ich die Markierung dieses threads als "Offene Frage" ausschalten!?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:34 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz