C++ BigInt类。加、减
我必须编写自己的类来处理非常大的数字。已添加:C++ BigInt类。加、减,c++,class,operators,biginteger,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 = index
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;
}
现在尝试对这两个数字进行减法和比较。
你知道怎么做减法吗?与其把o加在k上,不如把它减去。如果在此之后wynik<0,则向wynik添加10,并将进位(f)设置为-1 伙计,我有你的啤酒。工作完美 回来有问题 在运算符重载中,我有:
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);
do{
fin[i++]=wyniki.top();
wyniki.pop();//zdejmujemy z stosu
}而(!wyniki.empty())//阿兹尼贝齐空
fin[i]=0;
字符串res(fin);
这是家庭作业吗?否则,你可以使用GMP。也许你只需要实现一个XyczeFuzba,并确保waryfuczlys和winitykis是正确的?fin是什么?你似乎是零终止它。但是,如果它可以包含零字节作为数据,那就没有意义了。fin是一个字符数组,它保存加法的最终结果。有趣的变量名几乎可以肯定是因为程序员不是以英语为母语的人。@levis501:我都知道了,谢谢。也许你应该在回答之前读一下我的评论。
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;