Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
给定一个前缀布尔表达式,构造其真值表(使用C)_C_Prefix - Fatal编程技术网

给定一个前缀布尔表达式,构造其真值表(使用C)

给定一个前缀布尔表达式,构造其真值表(使用C),c,prefix,C,Prefix,给定的表达式最多有26个变量“A”、“B”、“Z” 和3个运算符“&”、“|”、“^”(XOR) 例如:输入 4.7和| AB | CA 4表示变量(A、B、C、D)的数量 7表示前缀表达式的长度 输出: A、B、C、D输出 0 0 0 0 0 0 1 0 0 0 1 0 0 现在我有了一个计算前缀表达式的算法: int Expr(){ char c = getchar(); if c is an operator op1 = Expr() o

给定的表达式最多有26个变量“A”、“B”、“Z”

和3个运算符“&”、“|”、“^”(XOR)

例如:输入 4.7和| AB | CA

4表示变量(A、B、C、D)的数量

7表示前缀表达式的长度

输出:

A、B、C、D输出

0 0 0 0

0 0 1 0

0 0 1 0 0

现在我有了一个计算前缀表达式的算法:

int Expr(){
    char c = getchar();
    if c is an operator
        op1 = Expr()
        op2 = Expr()
        return op1 c op2
    else if c is a variable
        return the value of c
}
我的问题是如何使变量A,B,C,D。。。变成0或1

并执行n^2次以构建真值表

我试图设置一个数组[26]={'A',…,'Z'}来匹配输入


但是它不起作用。

当然可以。一个简单的解决方案依赖于由0和2^n-1之间的数字
v
表示的“n位向量”

用循环枚举它们

for (int v = 0; v < (1<<n); v++) {
    ...
}
(int v=0;v<(11)&1的
不是零。C是
(v>>2)&1
,等等


实际上,对于任何
char字母
;它是
(v>>(字母-'A'))&1
无符号长A=0;对于(i='A'to'Z'){val[i]=bool(A);A>=1}A++;
@ibug数组如果是91个元素,而它实际上只需要是26个for(to)元素,这似乎是一种浪费循环最近被添加到C?请将其视为伪代码。它在值a=0上执行26次,然后a增加到1。虽然我不明白,但我会考虑更多。谢谢!