如何迭代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>..
}
好吧,因为你不能使用字符串,我不得不改变我的答案。因此,速度的囊。我会用数学。零是一个问题,但只是有一个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来处理。运行一次零并且你会得到你的答案。
我不想改变字符串..多数民众赞成的观点。 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分别指的箱子那么就不会任何字符串使用额外的变量进行修改
那么你期待1010?还是1234?或者1输入2输入3等? – Caperneoignis
你想在这个向量的整数?只有一个号码? – cuniculus
yea @Caperneoignis 4字母二进制 – SDFSF