从向量位置获取数字值

时间:2018-10-02 03:02:38

标签: c++11

实际上我是新来的

我脑子里有一个问题,就像这样:

我得到了任意大小的向量的输入,但是在这种情况下,让我们来看一下:

vetor = {1, 2, 3, 4}

现在,我要做的就是取这个数字并求和每个数字(考虑到它的单位,十,十,千),然后将结果注册到一个整数变量中,例如“ int vec_value”。

考虑到上述向量,答案应为:vec_value = 4321。

我将把main.cpp保留在帖子中,但是我将告诉您如何计算结果,但这给了我错误的答案。

vetor[0] = 1

vetor[1] = 2

vetor[2] = 3

vetor[3] = 4
  

结果应为=(1 * 10 ^ 0)+(2 * 10 ^ 1)+(3 * 10 ^ 2)+(4 * 10 ^ 3)= 1 + 20 +   300 + 4000 = 4321。

程序给我的解决方案是4320,如果我随机更改值,答案将跟随新值,但数字仍然错误。

如果有人可以看看我的代码以查看我做错了什么,我将不胜感激!

谢谢..

帖子末尾有指向图片的链接,显示了错误结果的示例。 请记住,有时程序会给我正确的答案(这让我更加困惑)

代码:

#include <iostream>
#include <ctime>
#include <cstdlib>
#include <vector>
#include <cmath>

using namespace std;

int main()
{
    vector<int> vetor;

    srand(time(NULL));
    int lim = rand() % 2 + 3; //the minimum size must be 3 and the maximum must be 4
    int value;

    for(int i=0; i<lim; i++)
    {
        value = rand() % 8 + 1; // I'm giving random values to each position of the vector
        vetor.push_back(value);
        cout << "\nPos [" << i << "]: " << vetor[i]; //just to keep in mind what are the elements inside the vector
    }

    int vec_value=0;

    for(int i=0; i<lim; i++)
    {
        vec_value += vetor[i] * pow(10, i); //here i wrote the formula to sum each element of the vector with the correspondent unity, tens, hundreds or thousands
    }

    cout << "\n\nValor final: " << vec_value; //to see what result the program will give me

    return 0;
}

Example of the program

1 个答案:

答案 0 :(得分:0)

在主循环中尝试以下方法:

$(document).ready

这样,所有计算都是整数,您不受浮点舍入的影响。