Strukturen in Bruchrechner einbauen
-
Hallo Leute,
hab ein kleines Problem... und zwar muss ich eine Struktur bauen, die eine Bruchzahl beinhaltet.
Grundsätzlich soll es dann ein Rechner werden, der zwei Bruchzahlen zusammenzählt und kürzt.
Das Programm an sich Funktioniert einwandfrei, nur hab ich keine Struktur dafür gebraucht.was bringt mir da eine Struktur??? und wie könnte man diese am besten verwenden?
gruß
martin
-
Deine Struktur, oder besser wäre eine class, Stellt nach außen hin deinen Burch dar und nach innen nimmt sie einfach 2 int/long Zahlen. Beispielsweiße so:
class Bruch { private: int zaehler; int nenner; public: Bruch(int z,int n); }Natürlich muss man hier noch paar Operatoren überladen und diverse Funktionen wie das Kürzen implementieren.
-
int n; int e,f; void kuerzen(int&,int&,int&); int main(int argc, char* argv[]) { /* Zahl a; Zahl b; a.zahler; b.nenner; printf("%d/%d", a.zahler[1], b.nenner[1] ); a.zahler[2]=9; b.nenner[2]=5; printf("%d/%d", a.zahler[2], b.nenner[2] ); */ char oper; int a,b,c,d; printf(" TEST\n"); cin>> a; cin>> b; cin>> oper; cin>> c; cin>> d; switch (oper) { case'+': {e=a*d+c*b; f=b*d; break; } case'-':{ e=a*d-c*b; f=b*d; break; } case'*': { e=a*c; f=b*d; break; } case'/': { e=a/c; f=b/d; break; } default: ; } kuerzen(e,f,n); e/=n; f/=n; printf("\n %d / %d\n", e,f); getch(); return 0; } //---------------- void kuerzen(int &e, int &f, int &n) { int m,h; m=e; n=f; do { if (m<n) { h=m; m=n; n=h; } h=m % n; if (h!=0) { m=n; n=h; } }while (h!=0); }ich hätte mal so angefangen...
nur wenn ich jetzt eine struktur oder eine class einbaue, muss ich die werte erst wieder zerlegen um ans ergebnis zu kommen
-
Und wo ist das Problem?
Was willst du jetzt zum Beispiel machen wenn du ein Array von mehreren Brüchen aufstellen sollst?
Willste dann für ein Bruch Array mit 10 Brüchen, ein Array mit der GRöße 20 anlegen um den nenner und Zähler seperat abzuspeichern? Würdest du hier ein Struct/class nehmen kannst du die Objekte dieser Bruchklasse hin und her reichen.P.S. Du programmierst kein C++, also falsches Forum.
-
Aho schrieb:
was bringt mir da eine Struktur??? und wie könnte man diese am besten verwenden?
Hallo Martin,
eine Struktur(Klasse) bringt dem Anweder von Bruch, dass er diesen (den Bruch) als Einheit behandeln kann ohne sich um seine Innereien (Nenner,Zähler) Gedanken machen zu müssen. Das vereinfacht die Anwendung erheblich.
Für einen Anweder wäre es doch prima, wenn er den Bruch genau wie eine int oder double behandeln könnte - also etwa so:
Bruch a(3,4); Bruch b(1,6); Bruch c = a + b; cout << "Ergebnis: " << c << endl;wie sähe diese Anwendung bei Dir mit Nenner und Zähler getrennt aus?
Aho schrieb:
ich hätte mal so angefangen...
nur wenn ich jetzt eine struktur oder eine class einbaue, muss ich die werte erst wieder zerlegen um ans ergebnis zu kommenNein - überhaupt nicht. Der Code - z.B. für das Addieren befindet sich ja im operator+= (oder operator+) und dort stehen Dir ja die Member - also Zähler und Nenner - unmittelbar zur Verfügung.
Mal angenommen der Bruch sähe so aus:
#include <iosfwd> class Bruch { public: explicit Bruch( int zaehler = 0, int nenner = 1 ); Bruch& operator+=( const Bruch& b ); friend std::ostream& operator<<( std::ostream& out, const Bruch& b ); private: int m_zaehler, m_nenner; }; Bruch operator+( Bruch a, const Bruch& b ) { return a += b; }Dann ist die Methode für das Zusammenzählen:
Bruch& Bruch::operator+=( const Bruch& b ) { int z = m_zaehler * b.m_nenner + b.m_zaehler * m_nenner; int n = m_nenner * b.m_nenner; kuerzen( z, n ); m_zaehler = z; m_nenner = n; return *this; }Firefighter schrieb:
P.S. Du programmierst kein C++, also falsches Forum.
.. oder richtiges Forum und noch viel zu Lernen.
Gruß
Werner