Закончил вроде бы шаманства с дизайном своего ЖЖ. Оставлю пока так, лучше ничего пока все равно не придумал :))
И решил запостить сюда еще один, довольно старый, пример шаманства:
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;
}
Зацените и ужаснитесь :)
Max Payne,
← Вернуться к журналу «Max Payne»
Комментарии
2 Кылл: Этот класс взят из какой-то задачи с последнего четвертьфинала, где нашей команде требовалось только сложение и вычитание :))
А что так слабо то? :) Где умножение? где деление длинного на длинное? :))))
Спасибо :)
Хотела бы кинуть тебе умный коммент относительно данного "шаманства"... Хотела бы,но...:-) Вообщем просто поздравляю с новым дизайном!