如何迭代int?

时间:2016-05-14 03:10:42

标签: c++ iterator int

我很困惑我如何迭代我的int,然后把结果放在一个int矢量..我需要为游戏做这个,帮助将非常感激...老实说,我有不知道如何制作这个函数,它将遍历int ...

cout << "\n PLEASE ENTER A 4 DIGIT BINARY! OR PROGRAM WILL EXIT \n\n\t";
cin >> binaryCin;
evaluateNum(binaryCin);     

void MasterMind::evaluateNum(int &bin) {
    // Need to iterate through binarycin and then put it in a vector<int>..
}

2 个答案:

答案 0 :(得分:1)

好的,既然你不能使用字符串,我就必须改变我的答案。所以对于速度的囊。我会用数学。零是一个问题,但只需要一个if语句来检查分区后的占位符,然后从那里开始。我确定你可以使用一个库来使这更容易,但听起来不像你可以使用任何这些,几乎就像这是家庭作业。所以我们必须这样做。此外,不要担心小数位,因为它是int,它将修剪小数点。 soo 427/100 = 4.27其中int只是4.我相信编译器总是截断,如果我错了,请告诉我。

void MasterMind::evaluateNum(int &bin)
{
    std::vector<int> numbers();
    int thousand,hundred,ten;
    int placeholder = 0;
    thousand = 1000;
    //bin = 4327
    placeholder = thousand / bin;
    //subtract the thousand position out of bin
    bin -= placeholder * thousand;
    numbers.push_back(placeholder);
    //now you have 327 
    //subtract the hundreds spot now
    hundred = 100;
    placeholder = hundred / bin;
    bin -= placeholder * thousand;
    numbers.push_back(placeholder);
    //now you have 27 now tens
    ten = 10;
    placeholder = ten / bin;
    bin -= placeholder * ten;
    //now you have just 7 in bin and 2 in place holder
    numbers.push_back(placeholder);
    numbers.push_back(bin);
}

这就是你如何分开用户传入的整数。您应该检查以确保数量不大。您需要为0添加一个检查/条件,如果值为0,则只丢弃占位符,而不是bin -= placeholder * ten。它将是bin -= ten;或者只是完全跳过它,我不记得C ++是将026作为026处理还是只处理26处。运行一次为零,你就会得到你的答案。

答案 1 :(得分:0)

这比基于固定数学的计算更好

 void MasterMind::evaluateNum(int &bin) {
        int n = bin;
        int i=0;
        vector<int> arr;
        while(n!=0){                    // loop will work for any size of binary number
            int tmp = n & 1;
            arr.push_back(tmp);
            n>>=1;
            i++;
        }
        std::reverse(arr.begin(),arr.end());  // since loop will give you reverse
}

而且我没有看到任何你想要的字符串&#34;没有修改过&#34;但如果你引用bin那么它就不会使用额外的变量

进行修改