动态分配数组,十六进制

Dynamic allocation arrays, hexa system

本文关键字:十六进制 数组 动态分配      更新时间:2023-10-16

我的代码有问题。我不知道,为什么它算错了。这个函数应该在十六进制中添加两个数字。我在动态分配数组中保留数字。

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

我添加了屏幕与in和out。http://screenshooter.net/102563004/tumxpyx

Mateusz,在构造函数中,如果您更改此

,则忽略传递的参数并始终将DEFAULT_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);

你也有其他的问题,如内存泄漏,和魔术数字,但让我们现在离开。