在条件语句中添加条件

时间:2018-12-09 20:23:58

标签: c++ c++11 if-statement dynamic-arrays

我正在为用户定义的and和gate输入量使用动态数组。

我遇到的问题是,我不知道用户要测试多少个输入,并且我需要能够有一个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;
}

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

3 个答案:

答案 0 :(得分:1)

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

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

// ...

答案 1 :(得分:0)

使用Vector数据结构,与数组不同,您无需在声明时告诉它的大小,它可以自动增长。
要读取输入直到到达,请将cin放入while循环条件中。我使用getline读取整行并使用它,以便每当用户在空行中按Enter键时,程序就会认为不再有输入输入,并将开始计算输入的“与”。

//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 == "\0")      //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;
}

随时问是否有一些疑问会持续存在

答案 2 :(得分: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;
}