![]() |
Bruchrechnen mit Delphi
Liste der Anhänge anzeigen (Anzahl: 2)
Hi!
Interessiert ihr Euch für Bruchrechnen? Ein leidiges Thema... Als ich noch in der Hauptschule war hatte ich damit echt große Probleme! Vor allem das elende Suchen von GGT´s und KGV´s ist mir echt schwer gefallen! Aber wir leben ja jetzt im Computerzeitalter, zum Glück! Schon seit vielen Jahren gibt es Taschenrechner mit denen man Bruchrechnen kann. Aber leider sieht man bei diesen Rechnern immer nur das Ergebnis, und nicht die einzelnen Zwischenschritte der Berechnung. Der Rechenweg bleibt einem leider verschloßen... Vor einigen Jahren habe ich deshalb ein Bruchrechnen-Programm für Windows in Delphi geschrieben. Dieses Programm rechnet tatsächlich so wie ich es damals in der Hauptschule gelernt habe. Alle Zwischenberechnungen und der Rechenweg werden grafisch ausgegeben. Brüche werden automatisch erweitert oder gekürzt, man kann sie addieren, subtrahieren, multiplizieren und dividieren. Außerdem kann man mit diesem Program einen Dezimalbruch (eine Zahl mit Komma) in einen echten Bruch umrechnen. Natürlich kann man die Berechnung auch abspeichern oder ausdrucken. Hier ein Beispiel : ![]() Das Programm läuft ab Windows 95. Leider gibt es diverse Unterschiede zwischen Delphi 3.0 und 7.0. Deshalb findet Ihr im Anhang zwei verschiedene Programm-Versionen. Delphi 7.0 erzeugt zwar einige Warnungen, aber es funktioniert trotzdem. Mit anderen Delphi-Versionen kann ich es nicht überprüfen. Die Originalversion, die es nur auf meinem eigenen Rechner gibt, verwendet Handy-Sounds von meinem alten Handy das ich früher mal hatte. Aus Gründen des Kopierschutzes mußte ich diese Handy-Sounds aber leider löschen, den Klingeltöne sind sehr begehrt... Das Programm ist OpenSource. Ihr könnt es Euch ja mal ansehen. Grüße von TOC! --------------------------------------------------------------------------------------------------- Version 0.6 Änderungen: 1.) Umwandlung von periodischen Dezimalbrüche in echte Brüche ist nun, dank Cheggas Hilfe, möglich. 2.) Aus allen Units wurde der veraltete Typ 'LongInt' entfernt und durch 'Integer' ersetzt. 3.) Fehler in der Speicher/Lade-Prozedur behoben. Nun können auch negative Brüche ohne Ganzzahl gespeichert/geladen werden. 4.) Erweitertes Internet-Menü 5.) Überlauffehler werden nun durch Exceptions abgefangen 6.) OldStyle-Objekt von InfoForm in Delphi-Objekt geändert 7.) Typ 'TFract' verwendet nun Cardinal-Variablen anstelle von Integer (Bringt 1 Bit mehr, und bei insgesamt 32 Bit ist das ´ne ganze Menge!) --------------------------------------------------------------------------------------------------- Hi! Hier kommt Version 0.7 von Bruchrechnen! Änderungen: 1.) Das Programm schreibt seinen Daten nun unter dem Schlüssel 'HKEY_CURRENT_USER\SoftWare\TocWare\Bruch Rechnen' in die System-Registrierung. 2.) Mit dem Menüpunkt 'Optionen/Registrierung aufheben' kannst Du diese Daten aus Deiner Registrierung wieder löschen. 3.) Alle Farbdialoge speichern nun die Anwenderfarben die Du selbst erzeugen kannst. 4.) Höhe der Statuszeilen etwas vergrößert damit der Text nicht so gequetcht aussieht Derzeit kann ich Euch nur bitten den fehlerhaften Schlüssel 'HKEY_CURRENT_USER\Bruch Rechnen' von Hand zu löschen (mit RegEdit.exe), Sorry! Hinweis: Dieses Programm verwendet einige meiner selbst gebastelten Komponenten, die Du benötigst um das Projekt zu öffnen und neu zu kompilieren. Eine aktuelle Version meiner Komponenten im Packet findest Du hier : ![]() Grüße von TOC! |
Re: Bruchrechnen mit Delphi
Hört sich wirklich sehr interessant an, aber leider sehe ich keinen Download :stupid: .
Und wegen: Zitat:
![]() Zitat:
EDIT: Ok, da sind sie :mrgreen: . Ich schaus mir gleich mal an! |
Re: Bruchrechnen mit Delphi
Bei mir sind irgendwie trotzdem ein paar (sorry, nervige ;-)) Sounds drin (klingt nach Handy) ;-)
|
Re: Bruchrechnen mit Delphi
Hi!
Zitat:
Ok, ich hab´s Bild mal hochgeladen bei ImageShake, aber es klappt trotzdem nit, seufz! [quote="Ultimator"]Bei mir sind irgendwie trotzdem ein paar (sorry, nervige ) Sounds drin (klingt nach Handy) Lösche im Verzeichnis 'Sound' einfach die Dateien '1.wav' bis '3.wav', und wenn Dich der Beep stört dann auch noch 'Beep.wav'. Grüße von TOC! |
Re: Bruchrechnen mit Delphi
OK, danke :-)
Ansonsten n super Programm :thuimb: |
Re: Bruchrechnen mit Delphi
Ja, die Sounds und die Farben sind wirklich etwas, naja :lol: .
Aber vom Umfang her wirklich super :thumb: ! Jetzt noch Dezimalbrüche mit Periode umwandeln, dann ist es perfekt :wink: . PS: Ich wollte das Programm mal kompilieren, es fehlt jedoch die Unit "TocsComponents", die doch sehr wahrscheinlich nicht mit Delphi 7 hinzugekommen :wink: . EDIT: Zitat:
|
Re: Bruchrechnen mit Delphi
Hi!
Zitat:
Erklär mir doch mal wie man sowas berechnet. Vielleicht kann ich das Programm dann um diese Funktion erweitern! Die Farben und Sounds könnt ihr Euch doch nach Belieben ändern! Zu der Sache mit meinen Komponenten: Ich werde die Unit 'TocsComponentns' die nächsten Tage hier als OpenSource hochladen. Dann könnt ihr das Programm auch neu kompilieren. Grüße von TOC! |
Re: Bruchrechnen mit Delphi
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
Zitat:
Ein Beispiel: 2,31|242| = 231011/99900 (die Zahlen zwischen || sind periodisch). Erklärung: (Anhang Bild) MfG Marc P.S.: Ich weiß, ich habe 'ne "Sauklaue"... :pale: (Siehe Bild) |
Re: Bruchrechnen mit Delphi
Hi!
[quote="Chegga"] Das ist ganz einfach, wenn man mal das Prinzip verstanden hat. :wink: Ein Beispiel: 2,31|242| = 231011/99900 (die Zahlen zwischen || sind periodisch).[\quote] Upps, ich raff´s nit. Das Prinzip bleibt mir verschlossen :pale: ! Werd mal ´nen Freund Fragen der Physik studiert hat. Oder erklär Du´s mir noch etwas genauer, mit ein paar weiteren Beispielen. Sobald ich das Prinzip verstanden habe kann ich das Programm wohl erweitern. Grüße von TOC! |
Re: Bruchrechnen mit Delphi
Hi,
ich kann dir dazu gerne noch ein paar Beispiele geben oder es dir genauer erklären. :thumb: Aber dazu sollten wir die PN-Funktion der DP nutzen. :wink: MfG Marc P.S.: Ich bin jetzt 'ne Weile nicht erreichbar, da ich jetzt dann Mittagschule habe. :? |
Re: Bruchrechnen mit Delphi
Hi,
da ich per PN auf das Thema "Periodische Dezimalzahlen als Bruch" angesprochen wurde, hier jetzt mein Versuch es zu erklären: Nehmen wir mal diese Zahl: 2,31|242| "Beobachtung":
Zuerst der Nenner des Bruches: Da wir drei Periodenzahlen haben, ergeben sich im Nenner drei 9-en. Da wir zwei Zahlen zwischen Komma und der Periode haben (31), ergeben sich im Nenner zwei 0-en. Folglich sieht unser Nenner jetzt so aus: -------- (-> Bruchstich) 99900 (-> Immer erst die 9er, dann die 0-en) Nun der Zähler: Von der Gesamtzahl (2,31|242|) wird die Zahl vor der Periode (231) subtrahiert. Rechnung: 231242 - 231 = 231011 (-> Zähler) Der Vollständige Bruch lautet: 231011 --------- 99900 In der Hoffnung, dass alles verstanden wurde, ein paar Aufgaben: :zwinker: a) 0,|214| b) - 3,12|73| c) 2,157|1364125| MfG Marc P.S.: Lösungen per PN von mir :!: Bitte nicht im Thread eure Lösungen vergleichen. Danke (Dieser OT-Beitrag reicht ja wohl. :angel2: ) |
Re: Bruchrechnen mit Delphi
Hi!
Vielen Dank, Chegga, :wink: für Deine ausführlich Erklärung. Ich denke das ich damit das Bruchrechnen-Programm um diese interessante Funktion erweitern können müßte. Ich hab´s mir runtergeladen und werd´s mir zuhause in Ruhe ansehen. Wird aber wohl ein paar Tage dauern bis ich dies umgesetzt habe. Grüße von TOC! |
Re: Bruchrechnen mit Delphi
:thumb: Hi Toc! Dein Programm ist wirklich super! Werd das sicher benutzen! :thumb: Auch die Bedienung ist schön einfach gestaltet! Aber einen Mangel hab ich noch entdeckt! Ich würde gerne fertige Rechnungen mit <Entfernen> wieder löschen. damit man nicht immer ins Bearbeiten-Menü muss. Ansonsten echt super! mfg mr47 |
Re: Bruchrechnen mit Delphi
@chegga: bist du gymnasium? also ich hab das nicht gelernt. aber deine erklärung ist super :thumb:
dankeschön :D , Aenogym |
Re: Bruchrechnen mit Delphi
Zitat:
Und du hast Recht, normal lernt man sowas nicht in der Schule. Aber mein Mathelehrer erstaunt uns immer wieder auf's Neue. :zwinker: :shock: Ich hätte nicht gedacht, dass so viele meine Erklärung "cheggen". Aber jetzt back to Topic :!: MfG Marc P.S.: Zitat:
Selber bin ich keines. :mrgreen: |
Re: Bruchrechnen mit Delphi
Zitat:
Ich habs auch gelernt. Allerdings nicht mit so einer Waldorf-Methode. |
Re: Bruchrechnen mit Delphi
Zitat:
Aenogym |
Re: Bruchrechnen mit Delphi
Zitat:
PS: Wir hatten es Anfang der 9. Klasse im Zusammenhang mit reellen Zahlen. Das ist ja eine wichtige Aussage, dass sich jede rationale Zahl als Bruch darstellen lässt. |
Re: Bruchrechnen mit Delphi
Hi!
Zitat:
Du kannst einfach auf den Mülleimer klicken, das löscht alle Berechnungen. Ich sollte wohl noch die 'Del'-Taste für´s Löschen abfragen... Grüße vo TOC! |
Re: Bruchrechnen mit Delphi
Zitat:
Läßt sich wirklich jede rationale Zahl als Bruch darstellen? Ist Pi eine rationale Zahl? Oder Wurzel aus 2? Wenn ihr weitere interessante Bruch-Algorhytmen habt dann erklärt sie mir bitte. Ich finde Cheggas Beitrag war gar nit OffTopic. Immerhin könnte ich dank seiner Erklärung diese interessante Funktion Problemlos ins Bruchrechnen-Programm einbinden. Und das Thema hier lautet immer noch: "Bruchrechnen mit Delphi". Grüße von TOC! |
Re: Bruchrechnen mit Delphi
Zitat:
Wenn du magst, kann ich dir mal die Begründung (zumindest von der Sache mit Wurzel 2) raussuchen, wenn ich sie noch finde :-) |
Re: Bruchrechnen mit Delphi
Zitat:
Zitat:
Zitat:
Zitat:
Nimm einfach alle Nenner bis zu einer Höchstgrenze, dazu dann passende Zähler, wenn es sich nicht mehr als ein eingegebener Wert unterscheidet, wird es ausgegeben. [edit]@Ultimator (bzw. TOC): ![]() |
Re: Bruchrechnen mit Delphi
Zitat:
0,9999... ist eine unendliche konvergierende Reihe, die auch als Folge 0,9 + 0,09 + 0,009 + 0,0009 + ... dargestellt werden kann. Es dürfte jedem klar sein, dass 0,9 auch geschrieben werden kann als 9*10^(-1), 0,09 ist 9*10^(-2), 0,009 ist 9*10^(-3), etc. Also entspricht die Folge der Summe ![]() Daraus kann man dann den Grenzwert bestimmen: ![]() |
Re: Bruchrechnen mit Delphi
Auch nicht schlecht :wink: .
|
Re: Bruchrechnen mit Delphi
Ich weis, ich werde OT, da das jetzt weniger mit reellen Zahlen als mit Brüchen zu tun hat, aber:
Der Beweis, dass √2 keine rationale Zahl ist: (Nach Euklid glaub' ich :mrgreen: ) Wenn √2 eine rationale Zahl ist, kann sie als unkürzbarer Bruch zweier natürlicher Zahlen dargestelt werden. Bruch: a/b Dann gilt: a²/b² = 2 Da dann a² = 2 * b² , folgt, dass a² durch 2 teilbar ist und somit a gerade sein muss. (Nur das Quadrat einer geraden Zahl ist gerade) Da a gerade ist ist das Quadrat von a durch 4 teilbar. Es gilt a = 2 * c und a² = 4 * c² Da a² = 2 * b² gilt auch 2 * b² = 4 * c² Daraus folgt b² = 2 * c², also ist b² und somit auch b duch zwei teilbar. Daraus folgt, dass der Bruch a/b mit zwei kürzbar ist, ein Widerspruch zu unserer Ausgangshypothese. √2 kann also nicht duch einen Bruch beschrieben werden, und ist somit keine rationale Zahl, sondern eine irrationale. |
Re: Bruchrechnen mit Delphi
Hi!
Zitat:
Also, ich hab mir alles runtergeladen und werds mir zuhause in Ruhe reinziehen. Aber wenigstens bin ich froh das 0,|9| = 1 kein Fehler ist. Ich hab´s nit gerne wenn eins meiner Programme so´n Fehler machen würde! Grüße von TOC! |
Re: Bruchrechnen mit Delphi
Das mit den Kettenbrüchen aber nicht ernstnehmen :wink: .
So sollte es ja etwa aussehen:
Delphi-Quellcode:
Also, entweder es ist richtig oder total falsch :gruebel: .
Approximation(Value, delta: Single; MaxDenominator: Integer): TBruchArray; //delta ist der maximale Unterschied, deine Implementierung der Brüche habe ich mir nicht angeschaut
var i: Integer; begin for i:=1 to MaxDenominator do if Abs(Round(i*Value)/i)<delta then //Round(i*Value) müsste der Zähler sein //Bruch hinzufügen end; |
Re: Bruchrechnen mit Delphi
Zu Kettenbrüchen: Da hab' ich mal was zu geschrieben, siehe Code-Library:
![]() |
Re: Bruchrechnen mit Delphi
Zu der Frage oben mit PI.
Ich bin zwar "nur" 9. Klasse, aber ich weiss, dass sich PI aus 4 * arctan(1) zusammensetzt...ja..was man so alles lernt wenn man neugierig ist :) Das 0,|9| = 1 hatten wir auch vor ein paar Wochen, und ehrlich gesagt finde ich zumindest die Erklärung unseres Mathelehrers unschlüssig (obwohl er sonst wirklich alles top erklärt und sehr gut ist). Ich weiss es nicht genau, aber er meinte, es gibt keine Zahl die man zu 0,|9| addieren kann um auf 1 zu kommen, denn was man auch addiert, man könnte die geschriebene Zahl einfach um eine 9 der Periode erweitern. Meine "Lösung" war ja 0,|0|1 was aber unmöglich ist da die 1 ja praktisch nie erscheint (aber trotzdem da ist). Ich finde nur, angenommen wir nehmen 0,9999 Dann bräuchten wir 0,0001 um auf 1 zu kommen. Nach Aussage des Lehrers könnten wir aber 0,99999 nehmen und schon bräuchten wir 0,00001 um auf 1 zu kommen. Aber - und das ist mein Kritikpunkt: Wenn er "einfach so" eine 9 der Periode anhängen darf, wieso sollte ich es dann nicht auch dürfen? Der Knackpunkt wäre halt nur diese nie erscheinende 1 bei 0,|0|1 , aber das ist doch sicher Interpretationssache. Praktisch wird sie nie erscheinen, theoretisch ist sie jedoch da, liegt nur im unendlichen. Wenn man dann 0,|9| = 1 setzt (obwohl es rein vom Menschenverstand her ja Unsinn ist, das wäre wie a=b für a!=b zu sagen) sollte man doch auch 0,|0|1 zulassen als praktisch nicht existierende Zahl. "x,|y|z" müsste doch die selben Rechengesetze haben, wieso sollte es also ungültig sein? Man kann zwar sagen man kann bei 0,|0|1 + 0,|0|2 Die 0 immer um eins erweitern und hat einen neuen Wert, aber was wenn man einfach einen Term hat der sich nicht angeben lässt, sprich: 0,|0|3 Das ist bei irrationalen Zahlen doch nicht anders. Zwar lassen sich alle auf dem Zahlenstrahl eindeutig festlegen, trotzdem kann man sie nicht als Wert angeben, da sie ja weder periodisch noch abbrechend sind, sprich unendlich und damit nicht ausschreibbar. Man kann nur einen Rundungswert angeben, was sich bei 0,|0|1 aber auch lässt. Gut, ich verstehe nicht viel davon, aber ohne eine ordentliche Begründung kann ich mich nicht damit abfinden, muss es zwar akzeptieren, habe aber immer Probleme damit :D air |
Re: Bruchrechnen mit Delphi
Hi,
![]() Damit müsste jetzt endgültig alles rund um die Periode geklärt sein. :zwinker: MfG Marc (P.S.: Besser hätte ich es selber nicht erklären können. :angel2: :mrgreen: ) |
Re: Bruchrechnen mit Delphi
Hi!
Wieder mal ein UpDate, aus mittlerweile wohl bekannten Gründen :roll: ! Ich hoffe ich hab bei der Überarbeitung keine neuen Fehler hineingebaut... :? ! Grüße von TOC :drunken: ! |
Re: Bruchrechnen mit Delphi
Ich habe da was gefunden, das optimiert werden könnte:
x/y * y/1 Das Programm macht folgendes: 1. x und y haben KEINEN GGT: x/y * y/1 = x/y * y = x/y * y/1 = (x*y)/(y*1) = (x*1)/(1*1) = x/1 = x 2. x und y haben GGTs a und b, c = y/b: x/y * y/1 = x/y * y = a/b * y = a/b * y/1 = (a*y)/(b*1) = (a*c)/(1*1) = (a*c)/1 = a*c = x Das könnte doch so abgekürzt werden, dass die vielen Rechenschritte nicht nötig sind ;) |
Re: Bruchrechnen mit Delphi
Hi!
Zitat:
Grüße von TOC :angel2: ! |
Re: Bruchrechnen mit Delphi
Zitat:
Wenn nun Zähler und Nenner des ersten Bruchs auch noch einen GGT besitzen, dann wird's noch komplizierter. Bsp: 3/12 * 12/1 = 3/12 * 12 = 1/4 * 12 = 1/4 * 12/1 = (1*12)/(4*1) = 12/4 = 3 ^^^ das hätte man auch einfacher so rechnen können: 3/12 * 12/1 = (3*12)/(12*1) = 3 ;) |
Re: Bruchrechnen mit Delphi
Hi!
Zitat:
Ich hab da recht allgemeine und grundsätzliche Bruch-Algorithmen hineingebastelt. Es gibt sicher noch viele Ausnahmen die man einfacher rechnen könnte... Hmm. Darüber nuß ich nochmal nachdenken. Mal sehen... Danke für den Typ :hi: ! Grüße von TOC :drunken: " |
AW: Bruchrechnen mit Delphi
gibt es auch so ein brogram das mehrere Brüche ausrechnet net nur 2 bis zu 8 brüche zusammen ?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 Uhr. |
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