Hilfe bei Klasse und Konstruktor
-
Hallo alle zusammen,
habe ein kleines Verständnisproblem bei dem unteren Code und sitze momentan voll auf heißen Kohlen weil morgen schon die Prüfung ist. Mein Problem ist dass ich nicht genau verstehe was genau hier passiert: Bruch c=a.Mult(b); . Mir ist schon klar das die zuvor gekürzten Brüche miteinander multipliziert werden, aber ich kann es hier nicht genau nachvollziehen. Ich hoffe einer von euch ist noch wach und kann mir das etwas erklären. Wäre super.
Vielen Dank schon malGruß
ArthyEdit:
Vieleicht erzähle ich noch etwas kurz zum Code:
beim Konstruktor werden die Variablen initialisiert und dann weiter zum Kürzen geschickt. Hierbei wird dann bei GGT der größte gemeinsame Teiler gesucht und die Brüche werden darauf gekürzt.Mein Proble ist halt dann das Multiplizieren. Falls ihr da etwas wisst, schreibt bitte. BITTE!class Bruch { int z, n; int GGT(int a, int b) { if(a<b) return GGT (b,a); int c=a%b; if (c==0) return b; return GGT (b,c); } void Kuerzen(void) { int ggt=GGT(abs(n),abs(z)); z=z/ggt; n=n/ggt; } public: Bruch Mult(Bruch b) { Bruch e(b.z*z, b.n*n); return e; } Bruch (int a, int b) { z=a; n=b; Kuerzen(); } void Out(void) { std::cout << z << "/" << n << "\n"; } }; int _tmain(int argc, _TCHAR* argv[]) { Bruch a(8,20); Bruch b(6,15); Bruch c=a.Mult(b); c.Out(); return 0;
-
du übergibt der funktion Mult einen bruch als parameter.
dh. ähnlich wie in deinem beispiel:
Bruch a(8,20); Bruch d(6,15); Bruch c=a.Mult(d); c.Out();
jetzt wird intern ein neuer Bruch erzeugt wobei hier bei dem beispiel zähler und nenner von a und d multipliziert werden. intern heißt der bruch d jetzt b, da er als parameter b übergeben wurde.
jetzt multiplizierst du in a zähler und nenner.
z, n sind von a und b.z, b.n sind von dem übergebenen d.hoffe das ist dir jetzt dadurch klar.
du solltest dir auf jeden fall funktionen und wie man parameter übergibt, wenn du da noch probleme hast.jperl