Ein neues Bruchprogramm in C++,
das mit 50 Stellen rechnet, liegt hier zusammen mit dem schrittweise
entwickelten Quelltext für didaktische Zwecke vor.
Die Beschreibung kann als PDF-Datei runtergeladen werden.
Die verschiedenen CPP Dateien, sowie eine kompilierte
Version können in Form einer ZIP-Datei runtergeladen werden.
Die Dateien sind sowohl mit dem
Microsoft Visual C++ 6.0 Compiler
als auch mit dem Compiler von
Borland C++ 5.5.1 kompatibel.
Ich wünsche viel Vergügen!
BRUCH.EXE v2.0
Das kleine Programm ermöglicht Rechnen mit grossen Zahlen und mit aus solchen
Zahlen geformten Brüchen, also mit rationalen Zahlen. Die Ein- und Ausgabe,
sowie die Rechenleistung basiert auf 50-stelligen (genaugenommen 51, Stellen
von 0 bis 50) positiven ganzen Zahlen. Kann eine Rechnung aus einem bestimmten
Grunde nicht durchgeführt werden, so wird dies durch eine Meldung
bekanntgegeben, so dass man nicht befürchten muss, ungenaue Resultate zu
erhalten, es sei denn, es hätte sich ein Programmierfehler eingeschlichen.
Eine Rechnung kann etwa dann nicht durchgeführt werden, wenn sie für ihre
Durchführung mehr als 50 Ziffern benötigt, oder wenn versucht wird, durch
0 zu dividieren.
Die Eingabe nimmt ausschliesslich positive Zahlen an. Bei der einzigen
Grundoperation, die unter diesen Bedingungen ein negatives Resultat
liefern kann, der Subtraktion, wird dann jeweils angegeben, ob das Resultat
positiv oder negativ ist. Dies ist auch bei der Lösung der diophantischen
Gleichungen der Fall. Das Hauptmenu erlaubt die Auswahl zwischen 8 Optionen,
die anschliessend kurz erläutert werden:
1) Information
Diese Option lässt einen Bildschirm mit allgemeiner Information über das
vorliegende Programm aufleuchten.
2) Bruchrechnen mit 50 Stellen
Diese Option beinhaltet im Wesentlichen die Möglichkeiten der früheren
Versionen des Programms, nämlich das Ausführen der 4 Grundoperationen
zwischen zwei beliebigen Brüchen, sowie die Bestimmung des G.g.T.
(des grössten gemeinsamen Teilers) und des K.g.V. (des kleinsten gemeinsamen
Vielfachen) von zwei Zahlen. Auch das Kürzen eines beliebigen Bruchs ist
möglich.
3) Euklidischer Algorithmus
Das auf der Primfaktorenzerlegung beruhende Verfahren zum Bestimmen
des G.g.T. zweier Zahlen, das meist in der Grundschule gelehrt wird,
ist bei grossen Zahlen nicht mehr praktisch durchführbar. Glücklicherweise
gibt es einen auf Euklides zurückgehenden einfachen Algorithmus, der es
ermöglicht, auch den G.g.T. von sehr grossen Zahlenpaaren auf einfache
Weise zu bestimmen. Das Verfahren besteht darin, die erste Zahl durch
die zweite Zahl mit Rest zu dividieren. Ist der Rest nicht 0, so wird
der Divisor durch den Rest dividiert; dieser Schritt wird so oft
wiederholt, bis der Rest 0 ist. Der letzte von 0 verschiedene Rest
ist dann der G.g.T. der beiden Zahlen:
744 = 5 * 132 + 84
132 = 1 * 84 + 48
84 = 1 * 48 + 36
48 = 1 * 36 + 12
36 = 3 * 12 + 0
4) Fibonacci-Folge
Eine Fibonacci-Folge ist eine Folge von ganzen Zahlen, die durch zwei
Anfangsglieder und die folgende Vorschrift rekursiv definiert ist: Jedes
Glied, mit Ausnahme der ersten beiden, ist die Summe der beiden vorangehenden
Glieder. Die wichtigste Folge dieser Art ist die mit den Anfangsgliedern:
f0 = 0
f1 = 1
Daraus lassen sich nach der erwähnten Vorschrift die nächsten Glieder
jeweils durch Addieren der beiden letzten vorangehenden Glieder bestimmen:
f2 = f0 + f1 = 1
f3 = f1 + f2 = 2
f4 = f2 + f3 = 3
Man erhält so nacheinander die Zahlen 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
Die Fibonacci-Folge hat ganz verblüffende Eigenschaften, über die ganze
Bücher geschrieben worden sind. Nur eine dieser faszinierenden Tatsachen
sei hier kurz erläutert. Teilt man eine Strecke (der Länge 1) so, dass sich
die kürzere Teilstrecke (Länge x) zur längeren (Länge 1-x) verhält wie die
längere zur gesamten Strecke, so sagt man, die Strecke werde im Verhältnis
des goldenen Schnitts geteilt. Es ergibt sich die Proportion:
x : (1-x) = (1-x) : 1
Die sich daraus ergebende quadratische Gleichung hat die wichtige Lösung
x = ((Wurzel aus 5) - 1)/2 = 0.61803...
Der Grenzwert der Quotienten aus zwei aufeinanderfolgenden Gliedern der
Fibonacci-Folge wenn der Index ins Unendliche wächst ist bewiesenermassen
genau diese Zahl, die den Goldenen Schnitt beschreibt.
5) Diophantische Gleichung ax + by = c
Man betrachte die folgende Aufgabe: Eine Kiste mit der Tara 30 kg wiegt
426 kg und enthält ausschliesslich 2 Sorten von Maschinenteilen: solche
die 45 kg und solche die 19 kg wiegen. Wie viele Teile von jeder Sorte
enthält die Kiste?
Die Lösung führt über die Gleichung
45 * x + 19 * y = 426 - 30
45 * x + 19 * y = 396
Es geht hier darum, alle GANZZAHLIGEN Lösungspaare x, y dieser Gleichung
zu bestimmen. Unser Programm liefert hier folgendes Resultat:
Lösung der Gleichung ax + by = c
Koeffizienten:
a = 45
b = 19
c = 396
Ein Lösungspaar, X0, Y0:
X0 = - 3168
Y0 = + 7524
Alle Lösungen der Gleichung haben die Form:
X = - 3168 + 19 * Z
Y = + 7524 - 45 * Z
Da für x und y nur positive Werte in Frage kommen, kommt als einzige Lösung
des gestellten Problems das Zahlenpaar x=5, y=9 in Frage. Bei so kleinen Zahlen,
kann das Resultat (oder die Resultate, denn die Aufgabe hat nicht unbedingt
eine eindeutige Lösung) durch Probieren bestimmt werden. Bei grossen Zahlen
aber benötigt man einen Algorithmus, wie er dem Programm BRUCH 2.0
zugrundeliegt.
6) Berechnen von Potenzen
Diese Option bietet die Möglichkeit, die Berechnung einer Potenz schrittweise
darzustellen.
7) Schreiben auf Datei EIN/AUSschalten
Ist die Option "Schreiben auf Datei" eingeschaltet, so erscheinen auf den
entsprechenden Arbeitsbildschirmen drei blinkende gelbe Sterne. Die
durchgeführten Rechnungen werden dabei auf eine Textdatei namens BRUCH.TXT
geschrieben. Dabei werden jeweils die neuen Rechnungen an die alte Datei
angehängt, also nicht überschrieben. Trotzdem wird im Falle, dass beim
Einschalten der Option "Schreiben auf Datei" bereits eine Datei mit dem
Namen BRUCH.TXT existiert (was meist der Fall ist, wenn bereits mit dem
Programm gearbeitet wurde) erst nachgefragt, ob diese verändert werden darf.
Da die Datei BRUCH.TXT eine ASCII-Datei ist, kann sie anschliessend mit jedem
ASCII-Editor (etwa EDIT von MS-DOS 5.0) bearbeitet werden.
8) Programm verlassen
Das Programm kann mit dieser Option, oder mit
Trotz ausgiebiger Prüfung des Programms sei erwähnt, dass für eventuell
durch das Programm BRUCH.EXE verursachte Schäden an Hard- oder Software
nicht gehaftet wird.
Das Programm ist ausbaufähig. Hinweise auf Mängel (Bugs), sowie
Verbesserungsvorschläge nimmt der Autor jederzeit gerne entgegen.
Das Programm darf frei kopiert und weitergegeben werden, unter der Bedingung,
dass die Datei BRUCH.EXE in unveränderter Form vorliegt.
Das Programm wurde mit TURBO PASCAL 7.0 von Borland kompiliert.