30.01.2006 | Шаманства | |
Закончил вроде бы шаманства с дизайном своего ЖЖ. Оставлю пока так, лучше ничего пока все равно не придумал :))
И решил запостить сюда еще один, довольно старый, пример шаманства: class tlong { public: tlong(); tlong(const string&); friend bool operator= 0; --i) { a[len] += t * (s[i] - '0'); t *= 10; ++q; if (q == DIG) ++len, q = 0, t = 1; } if (q >0) ++len; } tlong::~tlong() { } void tlong::print() { cout = 0; --i) { for (int t = BASE / 10, q = a[i]; t > 0; q %= t, t /= 10) cout = 0; --i) { if (a.a[i] > b.a[i]) return false; if (a.a[i] < b.a[i]) return true; } return false; } inline const tlong operator-(const tlong& a, const tlong& b) { if (a < b) { tlong t = b; t -= a; return t; } tlong t = a; t -= b; return t; } void tlong::operator-=(const tlong& t) { int l = max(len, t.len); for (int i = 0; i < l; ++i) { a[i] -= t.a[i]; if (a[i] < 0) { a[i] += BASE; --a[i + 1]; } } while ((l > 1) && (a[l - 1] == 0)) --l; len = l; } inline void tlong::operator+=(const tlong& t) { len = max(t.len, len); int r = 0; for (int i = 0; i < len; ++i) { a[i] += t.a[i] + r; r = a[i] / BASE; a[i] -= r * BASE; } if (r > 0) { a[len] = r; ++len; } } inline const tlong operator+(const tlong& a, const tlong& b) { tlong t = a; t += b; return t; } Зацените и ужаснитесь :) | ||
4 комментария
30.01.2006, 02:51
|