W
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 kommen
Nein - ü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