我必须编写自己的类来操作非常大的数字。已经添加:
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);
}
现在尝试对两个数字进行减法和比较。 知道怎么做减法吗?
答案 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()
上