BigInt 类。加法、减法

发布于 2024-10-13 04:19:30 字数 819 浏览 4 评论 0原文

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

 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);
}

现在尝试对两个数字进行减法和比较。 你知道如何做减法吗?

I have to write own class for operation on very big numbers. Already have adding:

 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;
}

I throw a stack to reverse the sequence.

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

Now trying to make substraction and comparison of the two numbers.
Have any idea how to make substraction?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

时光与爱终年不遇 2024-10-20 04:19:30

不要将 o 加到 k 上,而是将其减去。如果wynik < 0 之后,将 wynik 加 10 并将进位 (f) 设置为 -1。

Instead of adding o to k, subtract it. if wynik < 0 after that, add ten to wynik and set the carry (f) to -1.

随梦而飞# 2024-10-20 04:19:30

伙计,我拥有你的啤酒。工作完美。

回来有问题。

在运算符重载中,我有:

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() 上

Man, I own u beer. Works perfectly.

Got prob with returning.

In operator overloading I have:

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);

In main:

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

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

Error: Segmentation fault
on dl3.getData()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文