簡體   English   中英

在條件語句中添加條件

[英]Adding conditions to a conditional statement

我在為用戶定義的and門的輸入量定義動態數組。

我遇到的問題是,我不知道用戶要測試多少個輸入,並且我需要能夠有一個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;
    }
}

// ...

使用向量數據結構,與數組不同,您無需在聲明時告訴它的大小,它可以自動增長。
要讀取輸入直到到達,請將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;
}

隨時問是否有一些疑問持續存在

我想出了我想做的事。 感謝所有幫助過的人,尤其是保羅·桑德斯。 下面是我的最終代碼。

#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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM