Bardzo duże liczby

0

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 ?

0

KOD trochę poprawiłem ale nie działa przeniesienie... ;/
nie wiem nie umiem się doszukać błędu
Pomóżcie proszę

 total& total::operator += (const total& t)
{
   int c=0; //bit przeniesienia
   total z;
   if(this->length>=t.length)
   {
        z=(*this);
        for (int j=0; j<t.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; 
   }
    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;
   }return *this;
}
0

przecież to nieważne... po prostu pomóżcie mi rozwiązać problem bo ja już się nie orientuje

0
shial napisał(a):

po prostu pomóżcie mi rozwiązać problem bo ja już się nie orientuje
pomógłbym ci chętnie ale nie mam ochoty dekodować, która zmienna co oznacza. Skoro ty już sam się nie orientujesz w swoim kodzie to postaw się na miejscu obcej osoby. Składnia, którą tutaj stosujesz jest dla mnie nieprzejrzysta, tak samo konwencje przez co trudno jest zrozumieć o co ci chodzi w tym kawałku kodu. Poza tym nie mam pewności, czy błąd nie znajduje się gdzieś na innym poziomie klasy, którą realizujesz. Myślisz, że walniesz 3 komentarze i już cały kod staje się oczywisty? Próbowałeś chociaż raz kiedyś analizować czyjąś implementację czyjegoś algorytmu ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1