Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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, 17:33 |
мне очень плохо ,но писать надо |