向条件语句添加条件

Adding conditions to a conditional statement

我正在为一个和门的用户定义的输入数量摆弄动态数组。

我 运行 遇到的问题是我不知道用户要测试多少输入,我需要能够有一个 if-else 语句来测试每个输入。

#include <iostream>
#include <iomanip>
#include <string> 

using namespace std;

class logic_gate {
public:
    int x = 0;

};

int main() {

int userInput = 0;

cout << "How many inputs do you want on your and gate?: ";
cin >> userInput;
cout << endl;

logic_gate *and_gate = new logic_gate[userInput];

cout << endl << "Please enter the values of each bit below . . ." << endl << 
endl;

int userTest1 = 0;


for (int i = 0; i < userInput; i++) {

    cout << "#" << i + 1 << ": ";
    cin >> userTest1;
    and_gate[i].x = userTest1;

}

return 0;
}

这是我目前正在尝试寻找解决方案的代码。

要使用 n 输入实现与门,您只需执行以下操作:

int output = 1;
for (int i = 0; i < n; ++i)
{
    if (!and_gate [i])
    {
        output = 0;
        break;
    }
}

// ...

使用Vector数据结构,声明时不需要告诉它的大小,不像数组,它可以自动增长。
要读取输入直到它到达,将 cin 放入 while 循环条件中。我使用 getline 读取整行并使用它,这样每当用户在空行按下回车按钮时,程序就会认为不再有输入,并开始计算 'And' 的输入。

//don't forget to import vector
#include <iostream>
#include <vector>  
#include <string>
using namespace std;

class logic_gate {
public:
    int x = 0;
    logic_gate(){        //default constructor
    }
    logic_gate(int k){  //another constructor needed
        x = k;
    }
};

int main(){

    cout << endl << "Please enter the values of each bit below . . ." << endl;
    vector<logic_gate> and_gate;  //no need to tell size while declaration

    string b;
    while(getline(cin, b)){ //read whole line from standard input
        if (b == "[=10=]")      //input is NULL
            break;
        and_gate.push_back(logic_gate(stoi(b))); //to convert string to integer
    }

    if (!and_gate.empty()){
        int output = and_gate[0].x;
        for (int i = 1; i < and_gate.size(); i++){
            output = output & and_gate[i].x;
        }       
        cout << "And of inputs is: " << output << endl;
    }
    else{
        cout << "No input was given!\n";
    }
    return 0;
}

如有疑问欢迎随时提问

我明白了我想做什么。感谢所有提供帮助的人,尤其是保罗桑德斯。下面是我的最终代码。

#include <iostream>

using namespace std;

class logic_gate {
public:
    int x = 0;
};

int main() {

int userInput;
int output = 1;

cout << "How many inputs do you want on your and gate?: ";
cin >> userInput;
cout << endl;

logic_gate *and_gate = new logic_gate[userInput];

cout << endl << "Please enter the values of each bit below . . ." << endl << 
endl;

int userTest1;

for (int i = 0; i < userInput; i++) {

    cout << "#" << i + 1 << ": ";
    cin >> userTest1;
    and_gate[i].x = userTest1;

}
if (userInput == 1) {
    output = userTest1;

    cout << "The test of " << userTest1 << " is " << output << endl << endl;

}
else if (userInput > 1) {

    for (int i = 0; i < userInput; i++) {

    if (!and_gate[i].x)
    {
        output = 0;
        break;
    }

}

cout << "The test of ";

for (int i = 0; i < userInput; i++) {

    cout << and_gate[i].x;

}

cout << " is " << output << endl << endl;

}

return 0;
}