Witam.
Piszę bibliotekę do obsługi bardzo dużych liczb.
pisze ją na tablicy dynamicznej unsigned int.
Problem mam w dodawaniu tych liczb
mój kod operatora sumującego:
total& total::operator += (const total& t)
{
int c=0; //bit przeniesienia
total z;
if(this->length>=t.length)
{
for (int j=0; j<t.length; ++j)
{
this->znak[j] = (this->znak[j]+t.znak[j]+c)%10;
c = (this->znak[j]+t.znak[j]+c)/10; //liczenie przeniesienia
}
}
else
{
z=t;
for (int j=0; j<this->length; ++j)
{
z.znak[j] = ((this->znak[j]+t.znak[j]+c)%10);
c = ((this->znak[j]+t.znak[j]+c)/10); //liczenie przeniesienia
}(*this)=z;
}
if(c>0)// ew gdy bit przeniesienia wiekszy od 0
{
this->length++;
(*this).realokacja();
this->znak[length]=c;
}
}
Błąd występuje przy dodawaniu z przeniesieniem bo nie uwzględnia przeniesienia a przy zwykłym dodawaniu bez przeniesienia np
14+4
wyświetla mi 180 jako wynik.
Możecie pomóc mi znaleźć błąd ?