Brüche in c++ (Addieren, Subtrahieren, Multiplizieren, Dividieren und Rest berechnen)
-
Redsky schrieb:
für was wäre denn das erweitern hier gut?
Meinst du das Kommentar?
Das soll nur ausdrücken, dass in der Klasse die Deklaration der Methode ergänzt werden muss.
-
ChrissiB schrieb:
Du kannst noch viel verbessern.
Unter anderem kannst du versuchen, die Operatoren überladen.
Beispiel:// Operator + bruch operator+(const bruch& a, const bruch& b) { bruch temp; temp.n = a.n * b.n; temp.z = a.z * b.n + b.z * a.n; temp.reduce(); return temp; } // Und in Klasse class bruch { // ... public: friend bruch operator+(const bruch&, const bruch&); // ... }; // Kürzen void bruch::reduce() { int temp; if (n > z) temp = n; else temp = z; for (int i = temp; i > 1; i--) { if ((n % i == 0) && (z % i == 0)) { n /= i; z /= i; } } } // Klasse erweitern.. class bruch { // ... public: void reduce(); // ... };
Ist aber alles ungetestet.
gehört hier das obige vom Operator und kürzen zusammen? muss i beides eingeben dann in den source?, weil irgendwie funzt das ned
-
Redsky schrieb:
gehört hier das obige vom Operator und kürzen zusammen? muss i beides eingeben dann in den source?, weil irgendwie funzt das ned
Kannst du mal bitte deine Compilerfehlermeldung sagen?
Ja, das gehört alles zusammen.
Hier nochmal eine kleines Bruchprogramm, das ich grad gemacht habe:
(mit g++ compiliert es)// Datei: bruch.h #include <iostream> using namespace std; // Klasse bruch class bruch { private: long z, n; // Zähler und Nenner // weitere Variablen public: bruch(int pz = 0, int pn = 1) // Minimal-Konstruktor { z = pz; n = pn; } friend bruch operator+(const bruch&, const bruch&); // Operator + friend ostream& operator<<(ostream& os, const bruch&); // Operator << void reduce(); // Kuerzen // weitere Methoden };
// Datei: bruch.cpp #include "bruch.h" // Methode zum Kürzen void bruch::reduce() { int temp; if (n > z) temp = n; else temp = z; for (int i = temp; i > 1; i--) { if ((n % i == 0) && (z % i == 0)) { n /= i; z /= i; } } } // Operator + zum Addieren von 2 Brüchen bruch operator+(const bruch& a, const bruch& b) { bruch temp; temp.n = a.n * b.n; temp.z = a.z * b.n + b.z * a.n; temp.reduce(); return temp; } // Zur Ausgabe ostream& operator<<(ostream& os, const bruch& a) { os << a.z << "/" << a.n; return os; }
// Datei: main.cpp #include "bruch.h" int main() { // Zwei Brüche bruch a(2, 4), b(3, 6); // Ausgeben cout << "a + b = " << (a + b) << endl; // Bei Subtraktion nun: // cout << "a - b = " << (a - b) << endl; }
EDIT:
Du musst jetzt noch die anderen Operatoren (Subtraktion, Division und Multiplikation) und die Eingabe hinzufügen oder was du sonst noch brauchst.
-
hey jungs warum macht ihr euch dass alle so schwer? für kürzen nimmst du
modulo(%) das programm könnte viel kürzer sein... einfach for-schleifen if-anweisungen und */... das ist doch voll easy cu
ps: % nur bei gaszahlen
-
mr. xXx schrieb:
ps: % nur bei gaszahlen
*rofl*
Oh Mann, Gaszahlen!!!
Insgesamt ist dein PS gänzlich unnötig. Denn ein Bruch mit Kommazahlen ist kein richtiger Bruch.