动态分配数组,hexa系统

时间:2015-10-26 23:19:15

标签: 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 ? 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); }

我添加屏幕进出。 http://screenshooter.net/102563004/tumxpyx

1 个答案:

答案 0 :(得分:0)

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

你还有其他问题,如泄漏记忆和魔法数字,但现在暂时离开。