如何迭代int?

问题描述:

我很困惑我如何迭代我的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>.. 
} 
+0

那么你期待1010?还是1234?或者1输入2输入3等? – Caperneoignis

+0

你想在这个向量的整数?只有一个号码? – cuniculus

+0

yea @Caperneoignis 4字母二进制 – SDFSF

好吧,因为你不能使用字符串,我不得不改变我的答案。因此,速度的囊。我会用数学。零是一个问题,但只是有一个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来处理。运行一次零并且你会得到你的答案。

+0

我不想改变字符串..多数民众赞成的观点。 igtg现在睡觉 – SDFSF

这比做基于固定的数学计算

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 
} 

更好,我不知道你会想“不修改”,但如果u分别指的箱子那么就不会任何字符串使用额外的变量进行修改