2011-01-21 10 views
0

非常に大きな数字で操作するための独自のクラスを作成する必要があります。すでに追加しています:BigIntクラス。追加、引き下げ

char index1 = liczba1.length(); 
    char index2 = liczba2.length(); 



stack<char> wyniki; 
    while (index1 > 0 || index2 > 0) { 
     index1--; 
     index2--; 
     k = 0; 
     o = 0; 
     k = index1 < 0 ? 0 : (liczba1[index1] - 48); 
     o = index2 < 0 ? 0 : (liczba2[index2] - 48); 

    wynik = k + o + f; 
    if (wynik > 9) { 
     wynik -= 10; 
     f = 1; 
    } else { 
     f = 0; 
    } 
    wyniki.push(wynik+48); // 
} 
short i=0; 
if (f > 0){ 
    fin[i++] = f; 
} 

私はスタックをスローしてシーケンスを逆にします。

do { 
     fin[i++]= wyniki.top(); 
     wyniki.pop(); 
    } while (!wyniki.empty()); 
    fin[i]=0; 
    string res(fin); 
    return DuzaLiczba(res); 
} 

ここで、2つの数値の減算と比較を試みます。 どのように減算するか考えていますか?

+0

はこの宿題ですか?それ以外の場合は、GMPを使用できます。 –

+2

多分あなたはXyczeFuzbaを実装し、waryfuczlysとwinitykisを正しく取得する必要がありますか? –

+0

フィンですか?あなたはそれをゼロ終端しているようです。しかし、ゼロバイトをデータとして含めることができないのは意味がありません。 – TonyK

答えて

0

kにoを追加する代わりに、それを減算します。その後wynik <が0ならwynikに10を加え、carry(f)を-1に設定します。

0

男、私は自分のビールを所有しています。完璧に動作します。

返品時に問題が発生しました。

メインで
do { 
    fin[i++]= wyniki.top(); 
    wyniki.pop(); //zdejmujemy z stosu 
} while (!wyniki.empty()); //az nie bedzie empty 
fin[i]=0; 
string res(fin); 
cout << res(fin); 
return DuzaLiczba(res); 

DuzaLiczba dl1(liczba1); 
DuzaLiczba dl2(liczba2); 
DuzaLiczba dl5 = dl1-dl2; 
DuzaLiczba dl3 = dl1+dl2; 

temp1 = dl3.getData(); 
cout<<temp1; 

エラー:私は演算子オーバーロードで

dl3.getDataのセグメンテーションフォールト ()

関連する問題