私はC++のロジックシミュレータを開発中です。それはコンピュータ工学コースのプロジェクトです。このシミュレータは、回路記述と入力パターンという2つの入力ファイルを受け取ります。回路記述には、入力と出力の数とゲートが含まれます。 AND2 I1、I2、N1 //は、2つの入力とノードN1を出力とするANDゲートです。 構造体やリストを実装すると思いますが、すべてのノードをどのように接続するか、出力(または出力)を評価する関数を書く方法はわかりません。論理シミュレータリスト実装のC++
0
A
答えて
0
入力を持ち、出力を生成するクラスとしてゲートをモデル化することができます。例:
class Gate
{
public:
virtual ~Gate() {}
virtual bool read() = 0;
};
class AndGate : public Gate
{
private:
Gate *m_Input1;
Gate *m_Input2;
public:
AndGate(Gate *input1, Gate *input2) : m_Input1(input1), m_Input2(input2)
{
}
bool read() override
{
return m_Input1->read() & m_Input2->read();
}
};
class OrGate : public Gate
{
private:
Gate *m_Input1;
Gate *m_Input2;
public:
OrGate(Gate *input1, Gate *input2) : m_Input1(input1), m_Input2(input2)
{
}
bool read() override
{
return m_Input1->read() | m_Input2->read();
}
};
class NotGate : public Gate
{
private:
Gate *m_Input;
public:
NotGate(Gate *input) : m_Input(input)
{
}
bool read() override
{
return !m_Input->read();
}
};
class ConstantLine : public Gate
{
private:
bool m_State;
public:
ConstantLine(bool state) : m_State(state)
{
}
bool read() override
{
return m_State;
}
};
これは基本的にグラフネットワークを提供します。これで、ゲート同士を接続することができます。あなたの解決策では
ConstantLine x(true);
ConstantLine y(false);
ConstantLine z(true);
NotGate notGate(&z);
OrGate orGate(&x, &y);
AndGate andGate(&orGate, ¬Gate);
bool result = andGate.read();
あなたが動的にゲートを作成することがありますので、代わりに生のポインタを使用してのあなたが入力を管理するために、このようなstd::shared_pointer<Gate>
として、スマートポインタを使用する必要があります:あなたはどうなる((X | Y) & !Z)
計算するために、たとえば、ゲート。
関連する問題
- 1. ランポートの論理クロック実装
- 2. 論理式を実装するためのPythonコードの理解
- 3. WebSocketを実装して、PHPの理論と現実
- 4. Cの論理シフトで2のべき乗を実装する方法は?
- 5. Cの論理式
- 6. Golangのswitch内の型に論理ORを実装する
- 7. 皮質学習の実装(NumentaのHTM理論)
- 8. 3 PHPでの基準検索とその論理的実装
- 9. スカラに暗黙の論理演算子を実装する
- 10. Cコードの行の論理
- 11. Sympy:論理式のCコード
- 12. C#の基本ブール論理
- 13. 論理式Cの誤解
- 14. Symfony 3で論理消去を実装するには?
- 15. Objective-Cの論理を理解する
- 16. 論理インデックス - numpy.where in C++
- 17. c、ビット単位、論理式
- 18. ハンドルバーテンプレート内の論理論理
- 19. MultinomialNB - 理論と実践
- 20. C#の論理演算子の構造
- 21. C++クラスのインスタンス化の理論
- 22. C++の実装
- 23. AngularsJsの汎用部分として論理部分を実装します
- 24. C++:条件文との論理比較?
- 25. 範囲?論理か?目的のC
- 26. 論理ツリーの混在型C#
- 27. C++の論理エラー16進数コンバータコード
- 28. C++コード:論理エラーのKinectセンサー
- 29. 私のプログラムでC#論理エラー?
- 30. 理論ソルバーの実行時間をトリガー
グラフ理論は読みやすい良い主題のようです。 –
今まで行ってきたことを私たちに見せてください –
@JoachimPileborg私たちは理論的にリストを完成させたので、このプロジェクトではグラフ理論を使うことはできません。 – user46