我有一个空向量,需要用二进制数字1和0填充,并且当用户输入0和1以外的其他值时,向量的大小已完成。 我尝试过这样的事情:
#include "pch.h"
#include <iostream>
#include <vector>
using namespade std;
bool task1() {
vector<int> binV
int input = 0;
for (int i = 0; i < binV.size; i++) {
cout << "Enter binary number: " << " ";
if (input == 1 && input == 0) {
cin >> input;
binV.push_back(input);
}
else {
cout << "Wrong input, the size of vector is complete";
}
}
return 0;
}
int main() {
task1();
}
我做了一个简单的输入循环,并做出了这个if / else语句,我认为这是不正确的,但是没有找到解决问题的方法,并且遇到了代码问题C2446和C3867,我不明白,因为我不是C ++专家
答案 0 :(得分:1)
使用||而不是if语句中的&&。同样,在for循环的比较中向量的大小(binV.size())为0,因此循环将不会运行。您可能想尝试执行do while循环。希望我能有所帮助!
答案 1 :(得分:1)
您的向量的开头长度为零
vector<int> binV; //zero length
在这一行代码中
for (int i = 0; i < binV.size(); i++){//some code}
由于binV为空,将不会运行
此表达不正确
if (input == 1 && input == 0) //not valid
此&&
是逻辑和运算符,如果条件之一为false,则此表达式将返回false
您需要使用逻辑运算符或||
运算符
if (input == 1 || input == 0)
如果您要中断for循环(如果值不同于1或0)
for (int i = 0; i < binV.size(); i++) {
cout << "Enter binary number: " << " ";
if (input == 1 || input == 0) {
cin >> input;
binV.push_back(input);
}
else {
cout << "Wrong input, the size of vector is complete";
break; //here
}
break;
命令将结束循环
break语句导致封闭for,range-for,while或do-while循环或switch语句终止。
答案 2 :(得分:0)
我认为问题出在binV.size;
您需要将其替换为binV.size();