На главную

Комментарии

анонимно

Шаманства


Закончил вроде бы шаманства с дизайном своего ЖЖ. Оставлю пока так, лучше ничего пока все равно не придумал :))

И решил запостить сюда еще один, довольно старый, пример шаманства:

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»

Комментарии

  • 2 Кылл: Этот класс взят из какой-то задачи с последнего четвертьфинала, где нашей команде требовалось только сложение и вычитание :))

  • А что так слабо то? :) Где умножение? где деление длинного на длинное? :))))

  • Спасибо :)

  • Хотела бы кинуть тебе умный коммент относительно данного "шаманства"... Хотела бы,но...:-) Вообщем просто поздравляю с новым дизайном!

Новый комментарий

Скрытое сообщение