c++ - bool 真值表 C++

标签 c++ truthtable

(p -> q) <-> [( r ​​^ t ) v (not) s]

这个等式是我的老师给我们编写真值表的。我已经由老师对此进行了检查,但我在尝试填充数组时遇到了问题:

bool p[32] = { false };
bool q[32] = { false }; 
bool r[32] = { false };
bool s[32] = { false };
bool t[32] = { false };

我知道我正在尝试通过以下方式分配未预留的内存(获取“变量'p'周围的堆栈已损坏”):

for (int i = 0; i < counter; i++)           
    {
        toTrue[i] = true;
        for (int j = (counter * 2); j < (counter * 3); j++)     
        {
            toTrue[j] = true;
            for (int k = (counter * 4); k < (counter * 5); k++)     
            {
                toTrue[k] = true;
                for (int l = (counter * 6); l < (counter * 7); l++)     
                {
                    toTrue[l] = true;
                    for (int m = (counter * 8); m < (counter * 9); m++)     
                    {
                        toTrue[m];
                    }
                }
            }
        }
    }

这只是基于基本的真值表,其中会产生一个基本的 2 变量或真值表:

a b    c
1 1    1
1 0    1
0 1    1
0 0    0

我不确定如何在不使用 vector 的情况下解决这个问题,我对 vector 的了解非常有限,所以不能 100% 有信心走这条路。我的另一个想法是尝试创建多种方法来填充 p,然后是 q,然后是 r,等等。但是我的老师之前已经告诉我,我扩展代码的次数超出了我的需要,我想做多种方法,比如那会导致他说同样的话。有什么建议吗?

最佳答案

一种不同且简单的方法。

#include<iostream>

using namespace std;

bool getBit(unsigned int uint, int position) { // !!! no range check  !!! 
     return (uint >> position) & 0x1;
}

int main( int argc, char* argv[]) {

    bool p,q,r,s,t;
    
    cout << "p  q  r  s  t  (p -> q) <-> [( r ^ t ) v (not) s] \n";
    for ( unsigned int i = 0 ; i < 32 ; i++ ) {
             
        cout << getBit(i,0) << "  ";
        cout << getBit(i,1) << "  ";
        cout << getBit(i,2) << "  ";
        cout << getBit(i,3) << "  ";
        cout << getBit(i,4) << "  ";
        
        cout  << ((!p || q)  == (( r ^ t ) ||  !s));
        
        cout << endl;
    }
    return 0;
}

关于c++ - bool 真值表 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52505340/

相关文章:

C++: std::ifstream ifs(路径), 'path should be a constant'

c++ - 将值从 float 组传递到 double 组时的奇怪行为(C、C++)

C : 0 & 1 combinations using recursion

javascript - Javascript 中的真值表

r - 大量因果条件会在 QCA 分析中产生错误吗?

c++ - 在 C++ 函数中多次使用数组

c++ - std::set 的 find()

c++ - 在 sqlite 中将 char* 作为 vector<byte> 插入

c - 如何在 Turbo C 中创建真值表

circuit - 数字逻辑 - 卡诺图