Delphi-PRAXiS
Seite 6 von 6   « Erste     456   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Zahl als Bruch speichern (https://www.delphipraxis.net/100045-zahl-als-bruch-speichern.html)

cruiser 16. Okt 2007 12:54

Re: Zahl als Bruch speichern
 
Naja... ich geb zu ich hab es in C# 1:1 umgesetzt... beim Addieren eines Bruchs (-4/3) mit (1/3) hat es eine DivByZero Exception gehagelt. Beheben konnt ich das erst als ich die absoluten Werte für die GGT-Berechnung genommen hab.

:drunken:

Die Sprachen mögen verschieden sein, aber die Arithmetik bleibt doch gleich... will ich zumindest meinen

guidok 16. Okt 2007 14:03

Re: Zahl als Bruch speichern
 
Warum sollte ich überhaupt eine Klasse dafür nehmen? Der Typ für den Bruch als Record und die entsprechenden Funktionen in einer Unit, sind für diesen Zweck vollkommen ausreichend.

Meiner Meinung nach ist eine Klasse sinnvoll, wenn Werte und Methoden damit zusammengeführt werden können, was hier nicht der Fall ist. Die Klasse TBruch ist nur eine Sammlung von Methoden, die ich wie o.g. verwalten kann.

alzaimar 16. Okt 2007 14:07

Re: Zahl als Bruch speichern
 
Zitat:

Zitat von Amateurprofi
Zitat:

Zitat von alzaimar
Bist Du dir sicher, das a*b div c identisch mit (b div c)*a ist?
Beispiel : a=3, b=4, c=3.
(a*b) div c
a*b = 12 div 3 = 4

(b div c)*a
4 div 3 = 1 * 3 = 3

@alzaimar:
Nein, im Gegenteil. Ich bin mir, so wie auch du, sicher daß "a*b div c" nicht identisch ist mit "b div c * a", und ich bin auch sicher daß die Konstrukte i.d.R. unterschiedliche Resultate bringen.

:oops: Du machst dem zweiten Teil deines Nicks alle Ehre :thumb:

Amateurprofi 16. Okt 2007 14:45

Re: Zahl als Bruch speichern
 
Zitat:

Zitat von cruiser
Naja... ich geb zu ich hab es in C# 1:1 umgesetzt... beim Addieren eines Bruchs (-4/3) mit (1/3) hat es eine DivByZero Exception gehagelt. Beheben konnt ich das erst als ich die absoluten Werte für die GGT-Berechnung genommen hab.


Die Sprachen mögen verschieden sein, aber die Arithmetik bleibt doch gleich... will ich zumindest meinen

Vielleicht hast du es nicht korrekt umgesetzt.
Jedenfalls bei mir arbeitet die GGT-Routine fehlerfrei, auch mit negativen Zahlen.

cruiser 16. Okt 2007 14:58

Re: Zahl als Bruch speichern
 
bei mir klappts JETZT auch fehlerfrei... aber wenn ihr drüberschaun wollt, kann ich ja die .cs hier mit anhängen ;)

dominikkv 16. Okt 2007 19:29

Re: Zahl als Bruch speichern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Dann will ich hier auch mal meine Version der Unit veröffnetlichen :mrgreen:
Das ganze baut auf einen erweiterten Record-Datentyp auf, ist also erst ab Delphi 2006 verfügbar.

Das besondere sind die class Operatoren, welche eine einfache Handhabung der Variablen zur Verfügung stellen.
Die einzelnen Instanzen müssen nicht zuerst mit Create erstellt und mit Free freigegeben werden!
Beispiel:
Delphi-Quellcode:
procedure foo;
var A, B, C: TBruch;
begin
  A := 3; // jetzt steht in A 3/1

  B.Zaehler := 8;
  B.Nenner := 5; // jetzt steht in B 8/5
 
  B := B + 1; // jetzt steht in B 13/5

  C := B * A; // (13/5) * (3/1) = 39/5
 
  C := C / 13; // C = 3/5

  showmessage(FloatToStr(C)); // Fließkommazahl! 0,6
end;

cruiser 16. Okt 2007 22:20

Re: Zahl als Bruch speichern
 
Liste der Anhänge anzeigen (Anzahl: 1)
ähnlich wie meins ;)
C# mit .NET 2 notwendig

ein wenig anglifiziert das ganze...


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:00 Uhr.
Seite 6 von 6   « Erste     456   

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