AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zahl als Bruch speichern

Ein Thema von dino · begonnen am 21. Sep 2007 · letzter Beitrag vom 16. Okt 2007
Antwort Antwort
Seite 4 von 6   « Erste     234 56      
dino

Registriert seit: 15. Jul 2006
Ort: Bad Münstereifel
627 Beiträge
 
Delphi 5 Professional
 
#31

Re: Zahl als Bruch speichern

  Alt 21. Sep 2007, 20:48
was heisst packed record und was gibts da für alternativen?

also das sieht so wie es aussieht schon vernünftiger für mcih aus

nur wäre es auch schön, wenn ich dabei auch noch

xyz1+xyz2 ermöglichen könnte

also dass ich dann ergendwie festlege, dass wenn man ihn mit nem typ Txyz multipliziert, dass dann x,y und z jeweils addiert werden solen, oder dass wenn man dazu nen integer addiert, dass der integerwert einfach zu x addiert werden soll

oder wenn man zu nem integer das addiert, dann soll zum integer x,y und z addiert werden

sowas halt...
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#32

Re: Zahl als Bruch speichern

  Alt 21. Sep 2007, 21:01
Das geht nur mit neueren Versionen, mit Delphi 5 wird's dann eben irgendwie so aussehen:
Summe := AddiereBrueche(Buch1, Bruch2); Ist aber noch erträglich, oder ?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
dino

Registriert seit: 15. Jul 2006
Ort: Bad Münstereifel
627 Beiträge
 
Delphi 5 Professional
 
#33

Re: Zahl als Bruch speichern

  Alt 21. Sep 2007, 22:11
ist das jetzt für den fall klasse oder für den fall type record?
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#34

Re: Zahl als Bruch speichern

  Alt 21. Sep 2007, 22:42
Das is was für ein Record
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
dino

Registriert seit: 15. Jul 2006
Ort: Bad Münstereifel
627 Beiträge
 
Delphi 5 Professional
 
#35

Re: Zahl als Bruch speichern

  Alt 21. Sep 2007, 22:53
achso

ja schade aber es ist wirklcih erträglcih (musste heute schon härtere schicksalsschläge hinnehmen)
  Mit Zitat antworten Zitat
dino

Registriert seit: 15. Jul 2006
Ort: Bad Münstereifel
627 Beiträge
 
Delphi 5 Professional
 
#36

Re: Zahl als Bruch speichern

  Alt 23. Sep 2007, 11:13
wollte nur bescheid sagen, dass ich es jetzt mit record geschafft habe

hab mir ne eigene unit dafür gemacht

wer also mal mit brüchen arbeiten möchte, der kann sich ja meine anschauen und ggf anpassen

edit:

also zähler hab cih eunfach mal a und nenner b genannt...
mal, geteilt, plus, minus mit brüchen oder integer alles mit drin

dazu noch ein kleines bisschen kürzen(für miene zwecke ausreichend)

bruchtostr und noch einiges mehr ist auch noch drin

edit2: was ich eigetnlich sagen wollte:
Danke für eure Hilfe!
durch euch hab ich nun auch das geschafft
Angehängte Dateien
Dateityp: pas brueche_147.pas (5,5 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
dino

Registriert seit: 15. Jul 2006
Ort: Bad Münstereifel
627 Beiträge
 
Delphi 5 Professional
 
#37

Re: Zahl als Bruch speichern

  Alt 14. Okt 2007, 21:43
falls ich rückmeldung zu der unit wünsche muss ichs wohl als eigenes Thema veröffentlichen, oder?
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#38

Re: Zahl als Bruch speichern

  Alt 14. Okt 2007, 23:00
Schau mal da: Open Source
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
WS1976
(Gast)

n/a Beiträge
 
#39

Re: Zahl als Bruch speichern

  Alt 15. Okt 2007, 06:55
Hallo,

hier meine Lösung:

Delphi-Quellcode:
unit U_bruchrechnen;

interface
Type
  Bruchtyp=packed record
    z,n: int64; // Int64 wegen sehr großer Zahlen
  end;

  TBruch = class(TObject)
    //kleinsten gemeinsamen Teiler ermitteln
    function ggt(b0,b1:int64):int64;
    //kleinstes gemeinsames Vielfaches ermitteln
    function kgv(b0,b1:int64):int64;
    //Bruch kürzen
    function red(b0,b1:int64):Bruchtyp;
    //Bruch bo und b1 addieren
    function add(b0,b1: Bruchtyp):Bruchtyp;
    //Von Bruch b0 Bruch b1 abziehen
    function sub(b0,b1: Bruchtyp):Bruchtyp;
    //Bruch bo und b1 multiplizieren
    function mul(b0,b1: Bruchtyp):Bruchtyp;
    //Bruch bo durch Bruch b1 dividieren
    function divide(b0,b1: Bruchtyp):Bruchtyp;
  end;

implementation

function TBruch.add(b0,b1: Bruchtyp):Bruchtyp;
var a:integer;b:bruchtyp;
  Begin
    a:=kgv(b0.n,b1.n);
    b.n:=a;
    b.z:=(a div b0.n)*b0.z+(a div b1.n)*b1.z;
    result:=red(b.z,b.n);
  End;

function TBruch.sub(b0,b1: Bruchtyp):Bruchtyp;
var a:integer;b:bruchtyp;
  Begin
    a:=kgv(b0.n,b1.n);
    b.n:=a;
    b.z:=(a div b0.n)*b0.z-(a div b1.n)*b1.z;
    result:=red(b.z,b.n);
  End;

function TBruch.mul(b0,b1: Bruchtyp):Bruchtyp;
  Begin
    result:=red(b0.z*b1.z,b0.n*b1.n);
  End;

function TBruch.divide(b0,b1: Bruchtyp):Bruchtyp; // div geht nicht, weil das ja ein geschützter begriff ist...
  Begin
    result:=red(b0.z*b1.n,b0.n*b1.z);
  End;

function TBruch.ggt(b0,b1:int64):int64;
var a,b,r:integer;
  Begin
    If b0>b1 then
       Begin
         a:=b0; b:=b1
       end
    else
       begin
         b:=b0; a:=b1;
       end;
  // Berechnung des ggt
  repeat
    r:= a mod b;
    a:=b;
    b:=r
  until (r=0);
  result:=a;
End;

function TBruch.kgv(b0,b1:int64):int64;
  Begin
    result:=b0*b1 div ggt(b0,b1);
  End;

function TBruch.red(b0,b1:int64):Bruchtyp;
var a,a0,a1:integer;
  Begin
    a0:=b0;a1:=b1;
    while ggt(a0,a1)<>1 do
      Begin
        a:=ggt(a0,a1);
        a0:=a0 div a;
        a1:=a1 div a;
      End;
    result.z:=a0;
    result.n:=a1;
  End;
end.
Grüsse
Rainer

PS: Bis auf die Grundrechenarten ist alles aus der DP zusammengesucht.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: Zahl als Bruch speichern

  Alt 15. Okt 2007, 08:09
Die Methoden red, ggt und kgv sollten als private deklariert werden, weil man die nie braucht und sie daher eh nur innerhalb der Klasse verwendet werden.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 6   « Erste     234 56      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:04 Uhr.
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