Ausgabe des vereinfachten Bruchs
In diesem Schritt erweitern Sie das Bruchsvereinfachungsprogramm, um verschiedene Eingabefälle zu handhaben und eine übersichtliche Ausgabeformatierung zu gewährleisten.
Aktualisieren wir das Programm, um eine robustere Ausgabe für Brüche zu implementieren:
cd ~/project
nano fraction_simplify.c
Aktualisieren Sie den Code mit folgender Implementierung:
#include <stdio.h>
// Funktion zur ggT-Berechnung mit dem euklidischen Algorithmus
int computeGCD(int a, int b) {
a = (a > 0) ? a : -a;
b = (b > 0) ? b : -b;
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
// Funktion zum Drucken des Bruchs mit Sonderfallbehandlung
void printFraction(int numerator, int denominator) {
// Division durch Null behandeln
if (denominator == 0) {
printf("Fehler: Division durch Null ist nicht erlaubt.\n");
return;
}
// ggT berechnen
int gcd = computeGCD(numerator, denominator);
// Bruch vereinfachen
int simplified_numerator = numerator / gcd;
int simplified_denominator = denominator / gcd;
// Vorzeichen behandeln
if (simplified_denominator < 0) {
simplified_numerator = -simplified_numerator;
simplified_denominator = -simplified_denominator;
}
// Ergebnisse ausgeben
printf("Ursprünglicher Bruch: %d/%d\n", numerator, denominator);
// Unterschiedliche Ausgabe für ganze Zahlen und Brüche
if (simplified_denominator == 1) {
printf("Vereinfachter Bruch: %d\n", simplified_numerator);
} else {
printf("Vereinfachter Bruch: %d/%d\n",
simplified_numerator, simplified_denominator);
}
}
int main() {
int numerator, denominator;
printf("Geben Sie den Zähler ein: ");
scanf("%d", &numerator);
printf("Geben Sie den Nenner ein: ");
scanf("%d", &denominator);
// Funktion zum Drucken des Bruchs aufrufen
printFraction(numerator, denominator);
return 0;
}
Kompilieren und ausführen des Programms:
gcc fraction_simplify.c -o fraction_simplify
./fraction_simplify
Beispielausgaben:
Geben Sie den Zähler ein: 12
Geben Sie den Nenner ein: 18
Ursprünglicher Bruch: 12/18
Vereinfachter Bruch: 2/3
Geben Sie den Zähler ein: 15
Geben Sie den Nenner ein: 5
Ursprünglicher Bruch: 15/5
Vereinfachter Bruch: 3
Geben Sie den Zähler ein: -12
Geben Sie den Nenner ein: 18
Ursprünglicher Bruch: -12/18
Vereinfachter Bruch: -2/3
Codeerklärung:
- Funktion
printFraction()
hinzugefügt, um den Bruch auszugeben.
- Behandelt Sonderfälle wie Division durch Null.
- Verwaltet das Vorzeichen des vereinfachten Bruchs.
- Gibt ganze Zahlen aus, wenn der Nenner 1 ist.
- Bewahrt das ursprüngliche Vorzeichen des Bruchs.