BigInt类。加,减

时间:2011-01-21 09:25:08

标签: c++ class operators biginteger

我必须编写自己的类来操作非常大的数字。已经添加:

 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 :(得分:0)

不是将o添加到k,而是减去它。如果wynik&lt; 0之后,将10添加到wynik并将进位(f)设置为-1。

答案 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()