我该如何在C语言中创建真值表生成器?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我该如何在C语言中创建真值表生成器?相关的知识,希望对你有一定的参考价值。
我有一个学校项目,在给定电路规格文本文件的情况下,我需要设计一个真值表。我想知道最简单的方法是什么?
在我的项目中,我们将从文本文件中获得以下顺序的文本文件:
INPUT a b c
OUTPUT d
AND a c : y
AND a b : x
OR x y : d
我们看到有3个输入和1个输出。该程序应通过各个门并生成真值表。我只是无法确定如何使用哪种数据结构来编程。任何人有任何想法吗?我创建了一个链表,只要我的文本文件中有门,就会添加一个节点,但这是到目前为止我所做的一切。
答案
您需要解析文件以获取将要执行的输入,输出和按位操作的规范。
查看您提供的文本文件,它将采用以下格式:
- 输入数量(用字母表示,在您的情况下为3)
- 输出数量(用字母表示,在您的情况下为1)
- 要执行的操作:(a和c)| (a和b)
您应该使用std::ifstream
中的fstream
来读取文件,使用以下模板通过正确的变量和操作来设置环境,然后通过std::cout
中的iostream
输出结果。
在您的情况下,您可以执行以下操作(大部分不会实现):
#include <fstream>
#include <iostream>
int main()
std::ifstream file("yourfile.txt");
for (std::string line; std::getline(file, line); )
// find out if line starts with input, output, or if it's just the operations (these lines are prefixed with AND, OR, etc)
if (line startswith "INPUT") // pseudocode
// count instances of letters after the "INPUT" keyword, and get the inputs
else if (line startswith "OUTPUT") // pseudocode
// you know now how many outputs you'll be expecting, you could even declare variables or something for this
else
// process AND, OR, whatever
int a, b, c; // these don't have to be declared here, this is just for your example
std::cout << (a & c) | (a & b); // in your case, this will be dependant.
以上是关于我该如何在C语言中创建真值表生成器?的主要内容,如果未能解决你的问题,请参考以下文章