所以我正在实现一个BigNum类来处理大整数,并且当前正在尝试修复我的字符串构造函数类。我必须能够在数组中读取诸如“ -345231563567”之类的字符串,并向后读取数字(即765365132543)。附带的代码的第一部分检查第一个字符以查看它是正数还是负数,并将正数设置为true或false。代码的下一部分将检查可能出现的数字中的前导零以及数字本身是否为零。最后一部分是将数字加载到数组中的原因,由于某种原因,我无法使代码正常工作。非常感谢您提供解决方案的帮助。

    BigNum::BigNum(const char strin[])
{
size_t size = strlen(strin);
positive = true;
used=0;
if(strin[0] == '+')
{
    positive = true;
    used++;
}
else if(strin[0] == '-')
{
    positive = false;
    used++;
}
else
{
    positive = true;
}

// While loop that trims off the leading zeros
while (used < size)
{
    if (strin[used] != '0')
    {
    break;
    }

    used++;
}

// For the case of the number having all zeros
if(used == size)
{
    positive = true;
    digits = new size_t[1];
    capacity = 1;
    digits[0] = 0;
    used = 1;
}
// Reads in the digits of the number in reverse order
else
{
    int index = 0;
    digits = new size_t[DEFAULT_CAPACITY];
    capacity = size - used;


    while(used < size)
    {
    digits[index] = strin[size - 1] - '0';
    index++;
    size--;
    }
    used = index + 1;
}
}


BigNum.h可以在这里找到
http://csel.cs.colorado.edu/%7Eekwhite/CSCI2270Fall2011/hw2/revised/BigNum.h

我尝试使用的测试文件可以在这里找到。我考试不及格7
http://csel.cs.colorado.edu/%7Eekwhite/CSCI2270Fall2011/hw2/revised/TestBigNum.cxx

最佳答案

似乎您分配了已定义为20的DEFAULT_CAPACITY字节,并继续在其中放入22位数字。

关于c++ - BigNum类字符串构造函数错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7631297/

10-11 06:00