C++ 动态分配阵列,hexa系统
我的代码有问题。我不知道,为什么它算错了。 此函数应在hexa系统上添加两个数字。我将数字保存在动态分配数组中C++ 动态分配阵列,hexa系统,c++,C++,我的代码有问题。我不知道,为什么它算错了。 此函数应在hexa系统上添加两个数字。我将数字保存在动态分配数组中 CHexNumber CHexNumber::cAdd(CHexNumber *pcOther) { int i_result_len = 0; CHexNumber c_result(i_result_len); int i_result = 0; int i_memory = 0; i_result_len = (i_len > pcOther -> i_len ?
CHexNumber CHexNumber::cAdd(CHexNumber *pcOther) {
int i_result_len = 0;
CHexNumber c_result(i_result_len);
int i_result = 0;
int i_memory = 0;
i_result_len = (i_len > pcOther -> i_len ? i_len + 1 : pcOther -> i_len + 1);
c_result.vSetLength(i_result_len);
for (int i = 0; i < c_result.i_len; i++)
{
i_result = pi_number[i] + pcOther->pi_number[i] + i_memory;
if (i_memory > 0)
i_memory--;
if (i_result >= 16)
{
i_result %= 16;
i_memory++;
}
c_result.pi_number[i] = i_result;
}
return(c_result); }
CHexNumber CHexNumber::cAdd(CHexNumber*pcOther){
int i_result_len=0;
检查编号c_result(i_result_len);
int i_结果=0;
int i_内存=0;
i_-result_-len=(i_-len>pcOther->i_-len?i_-len+1:pcOther->i_-len+1);
c_result.vSetLength(i_result_len);
for(int i=0;ipi_编号[i]+i_内存;
如果(i_内存>0)
我记得--;
如果(i_结果>=16)
{
i_结果%=16;
i_memory++;
}
c_结果。pi_数[i]=i_结果;
}
返回(c_结果);}
我添加带有输入和输出的屏幕。
Mateusz,在构造函数中,如果更改此值,则忽略传递的参数,并始终将
DEFAULT\u LEN
设置为表达式长度
CHexNumber::CHexNumber(int iLen)
{
iLen = DEFAULT_LEN;
vSetNumber(iLen);
vSetLength(iLen);
}
对此
CHexNumber::CHexNumber(int iLen)
{
vSetNumber(iLen);
vSetLength(iLen);
}
另一件事是改变这一点:
CHexNumber c_b(s_temp.length());
c_a.vSetSign(bCheckNumber(s_temp));
c_a.vChargeArray(s_temp);
c_a.getValue();
进入这个
CHexNumber c_b(s_temp.length());
c_b.vSetSign(bCheckNumber(s_temp));
c_b.vChargeArray(s_temp);
c_b.getValue();
还有:
i_result_len = (i_len > pcOther -> i_len ? i_len + 1 : pcOther -> i_len + 1);
c_result.vSetLength(i_result_len);
为此:
i_result_len = (i_len > pcOther -> i_len ? i_len + 1 : pcOther -> i_len + 1);
c_result.vSetLength(i_result_len);
c_result.vSetNumber(i_result_len);
您还存在其他问题,如内存泄漏和幻数,但我们暂且不谈。请在使用调试器时包含构造函数,并单步检查代码,是哪条语句导致了问题?该语句中变量的值是什么?CHexNumber::CHexNumber(int-iLen){iLen=DEFAULT_-LEN;vSetNumber(iLen);vSetLength(iLen);}我的意思是在文章中,编辑它并添加构造函数和所有帮助程序。在我看来,你似乎没有正确设置c_结果长度,但在看到完整代码之前我无法判断它的.h和.cpp不起作用:(但我使用了调试器,正如Thomas和我发现的那样,pcOther->pi_编号[I]取值-84215040。这有什么问题吗?除了你总是假设总是有进位之外,这算是一种工作。例如1+2你总是假设结果有两位数,这是不正确的。Uff..这有很多错误;)检查EditsHanks Bartosz,我发现了错误。这是一个关于主要的、简单的错误的糟糕声明。