Dezimalzahl in Bruch umwandeln C?
Schreiben Sie ein Programm, das eine Zahl mit 2 Dezimalstellen einliest und in einen gekürzten Bruch umwandelt. Dieses Beispiel ist ebenfalls mit Funktionen zu programmieren.
Anleitung: zuerst ist die Zahl in einen Bruch der Form x/100 umwandeln.
Bitte helfen ist dringend!!!
4 Antworten
Ist doch ganz einfach: Du liest die Zahl (im Beispiel 0,64) ein und "merkst" dir den Bruch, also 64/100 im Beispiel. Dann findest du den größten gemeinsamen Teiler der Zahl (mit dem euklidischen Algorithmus) und 100 und teilst Zähler und Nenner durch den GGT. Dann hast du den gekürzten Bruch. (im Beispiel 16/25, weil ggt(64,100) ist 4). Was du vielleicht noch machen musst, ist eine Ausnahme machen, wenn der ggt(x, 100) gleich 100 ist. Dann einfach nur den gekürzten Zähler ausgeben, anstatt künstlich (y/1); ich weiß ja nicht, wie du das genau umsetzen musst.
Der größte gemeinsame Teiler kann nur 1, 2, 4, 5, 10, 20, 25, 50 oder 100 sein. Das vereinfacht das kürzen erheblich. Geht dann ohne euklidischen Algorithmus oder Primfaktorzerlegung.
Waa ist den x/100 als Dezimalzahl? Bzw. was ist denn zB 0.05 als Bruch mit Nenner 100?
Wie weit bist du? Wo kommst du nicht weiter? Was hast du dir überlegt?
Ich werde dir sicher kein komplettes Programm schreiben, aber ich helfe dir gerne, wenn du genau erklärst, wie dein bisheriger Ansatz aussieht und wo deine Probleme sind.
wenn ich zum Beispiel 0.22 eingebe gibt es folgendes aus:
0.22
0.220000
22.000000
100
Die Funktion, die du ggT nennst, macht entweder gar nichts (wenn nenner <= zaehler) oder geht in eine Endlosschleife. Jedenfalls berechnet sie kein ggT. Da der ungekürzte Nenner immer 100 ist, kannst du den ggT auch von 100 bis 1 runterzählen und teilen sobald es passt (zaehler % ggT == 0)
BerechneBruch teilt durch number, was du vorher mit 0 initialisierst. Den übergebenen Parameter ggT benutzt du nicht.
Im Aufruf von berechneBruch übergibst du ggT, das ist aber der Name der Funktion, vermutlich meinst du die Variable ggTei?
Mich wundert, dass da überhaupt irgendwas passiert. Ist das C? Ist bei mir mindestens 20 Jahre her. Das macht keine Typprüfung, oder?
Das wäre mein Code bisher aber weiter habe ich keine Ahnung