Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Умножение сверхдлинных чисел


Автор: Cerg121 9.5.2010, 12:25
Некак не хочет работать:

LongInt LongInt::operator *(const LongInt &x) //Умножение
{    
    LongInt z, w;
    z.m_len=m_len+x.m_len;
        z.AddZero(z.m_len);
        unsigned int i,j,c,g,gg;
        g=m_len; gg=x.m_len;
    
        for (i=0; i<g; i++)
        {
            for (j=0; j<gg; j++)
            {
                c=m_Val[i]*x.m_Val[j];
                w=LongInt©; // где то тут или дальше косяк
                w.LShift(i+j);
                z=z+w;
                
            }
        }
        z.DelZero();
        return z;
}

В ответе всегда cccccccc0000, если цикл сделать вот так:

                                                        c=m_Val[i]*x.m_Val[j];
                w.m_Val[i]=c;
                w.LShift(i+j);
                z=z+w;
то он верно будет считать неболтшие числа, а потом начнет терять первые числа... Если нужно могу весь калькулятор показать с работающими вычитанием и сложением.

Автор: NightmareZ 9.5.2010, 15:54
У тебя в голове каша, от того и все проблемы.

Цитата(Cerg121 @  9.5.2010,  12:25 Найти цитируемый пост)
Некак

 smile 

Цитата(Cerg121 @  9.5.2010,  12:25 Найти цитируемый пост)
unsigned int i,j,c,g,gg;

 smile 

Автор: Cerg121 9.5.2010, 17:33
мне очень плохо ,но писать надо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)