Verständnisfrage von Code
-
**Edit:
**Omg... Ich ess grad mein Müsli und denk mir nur "das war doch *= oder?"./
Ok, das ist mir jetzt wirklich peinlich...
template <typename IntType> rational<IntType>& rational<IntType>::operator*= (const rational<IntType>& r) { // Protect against self-modification IntType r_num = r.num; IntType r_den = r.den; // Avoid overflow and preserve normalization IntType gcd1 = math::gcd(num, r_den); IntType gcd2 = math::gcd(r_num, den); num = (num/gcd1) * (r_num/gcd2); den = (den/gcd2) * (r_den/gcd1); return *this; }
Der Code ist so exact aus boost::rational (was ich zur Zeit studiere, um mit meiner eigenen Version zu vergleichen):
Sagen wir ich rechne1/3 += 1/4: num = 1 den = 3 r_num = 1 r_den = 4 gcd1 = gcd(1, 4) = 1 gcd2 = gcd(1, 3) = 1 num = (1/1) * (1/1) = 1 den = (3/1) * (4/1) = 12 = 1/12 Wobei 1/3 + 1/4 = 4/12 + 3/12 = 7/12
Bitte helft mir, was mache ich da falsch?
-
Du rechnest += und liest den Code für *=
-
Ich weiß das ist noch etwas früh, aber ich würde gerne den Thread für den 'dümmsten Thread des Jahres' contest eintragen
~edit: falscher smiley~