首页 > 解决方案 > 如何通过一个错误修复此向量?

问题描述

在下面的代码块中,我传入了一个随机数,我想将其分解为 20 个基数的组件。例如,数字 12280,它可以分解为 . 1 x 20^3 + 10 x 20^2 + 14 x 20^1。这里的for循环将取那个随机数,减去20^(randomNumber),然后如果它给出一个负数,那么它将继续下一个较低的指数,直到找到给出正数的指数。然后 while 循环将获取随机数,将其减去 20^(第一个 for 循环找到的指数),然后将其推入向量中。然后它一直在下降,直到我们达到 0。

这是我的问题当我尝试运行程序时(对于 randNum=12280),程序输出 3 个中的 1 个、2 个中的 10 个和 1 个中的 13 个,而不是 1 个中的 14 个。它总是关闭一个。我怎样才能让它给我14个1?

   vector<int> brokenUp(int randNum)
{

    vector<int> powers;
    double temp = randNum;

    for (int j = randNum; j > 0; j--)                                              
    {
        if (temp - pow(20, j) < 0)
        {
            continue;
        }
        while (temp - pow(20, j) > 0)
        {
            temp = temp - pow(20, j);
            powers.push_back(j);
        }
    }


    for (unsigned int e = 0; e < powers.size(); e++)
    {
        cout << powers.at(e) << endl;
    }
     return powers;
}

标签: c++

解决方案


推荐阅读