将trueTable结果转换为布尔语句

'

我试图将真值表的结果转换回布尔语句。对于那些不熟悉的人,我将详细介绍。

我有一个字符串向量,格式如下。向量内的所有字符串成员具有相等的长度。成员仅由-0组成1例如,向量v包含3个成员,每个成员的长度为5。

string vv[] = { "--1-0"  , "-1-1-" ,  "01-1-" };
std::vector<string> v(begin(vv), end(vv));

字符串的每个字符代表另一个向量“ A”成员以及布尔运算。例如,

第一个--1-0(A[2] && !A[4])

我想将上面的向量v转换为

(A[2] && !A[4]) || (A[1] && A[3] ) || (!A[0] && A[1] && A[3])

我想做的是有一个带有向量的函数,vA作为输入,返回值在布尔语句之上。我相信你已经注意到了,1true0Not true-是不在乎的状态。

编辑:我不打算解决一个真理表或Kmap。我已经有结果了。我的结果采用“ v”向量的格式。我想使用布尔语句在V和A之间创建链接。

任何建议表示赞赏。

最高66

我想问题是我的英语说得不好,但我不清楚您到底想要什么。

如果需要给定向量std::string的向量和bool返回bool的向量函数,则根据您的指示,这很容易做到(希望没有错误)。

你用std::begin()所以我想C ++ 11对你有好处

#include <vector>
#include <iostream>
#include <stdexcept>

bool singleStatement (const std::vector<bool>  & a,
                      const std::string        & s)
 {
   auto  ret = true;

   if ( a.size() < s.size() )
      throw std::runtime_error("invalid size");

   for ( unsigned  i = 0U ; i < s.size() ; ++i )
      switch ( s[i] )
       {
         case '-': break;
         case '1': ret &= a[i]; break;
         case '0': ret &= !a[i]; break;
         default:  throw std::runtime_error("invalid char"); break;
       }

   return ret;
 }

bool statements (const std::vector<bool>        & a,
                 const std::vector<std::string> & v)
 {
   auto  ret = false;

   for ( const auto & s : v )
      ret |= singleStatement(a, s);

   return ret;
 }


int main ()
 {
   std::vector<bool>         a { true, false, false, true, false };
   std::vector<std::string>  v { "--1-0"  , "-1-1-" ,  "01-1-" }; 

   std::cout << "statement is " << statements(a, v) << std::endl;

   return EXIT_SUCCESS;
 }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在选择时将布尔字段转换为“是”或“否”语句

来自分类Dev

将数组内的布尔值转换为if语句

来自分类Dev

如何将一个类中的布尔方法的结果转换为 Java 中另一个类的 if 语句?

来自分类Dev

在GPU上更快的是什么?将布尔类型转换为int或使用分支语句?

来自分类Dev

如何通过在PostgreSQL中使用when语句来防止将文本转换为布尔值?

来自分类Dev

Javascript和lodash ...将_.find结果转换为布尔值

来自分类Dev

将多行Select语句结果转换为单行字符串结果

来自分类Dev

将shell语句转换为OR

来自分类Dev

将IF语句转换为CASE

来自分类Dev

将shell语句转换为OR

来自分类Dev

将语句转换为联接

来自分类Dev

将if语句转换为switch语句

来自分类Dev

将MERGE语句转换为UPDATE语句

来自分类Dev

将布尔数组转换为整数

来自分类Dev

将Typescript转换为布尔值

来自分类Dev

将布尔值转换为整数

来自分类Dev

将布尔数组转换为整数

来自分类Dev

将布尔值转换为char

来自分类Dev

如何将选择语句结果转换为JSONARRAY并更新另一个表

来自分类Dev

SQL - 将 SELECT 语句的结果转换为存储过程中的参数

来自分类Dev

在C语言中,如何将几个布尔值转换为int,其位值是差值测试的结果

来自分类Dev

将SQL语句转换为Rails ActiveRecord

来自分类Dev

将循环语句转换为linq模式

来自分类Dev

SELECT语句将列转换为行

来自分类Dev

将if-elseif语句转换为字典

来自分类Dev

将ereg语句转换为preg

来自分类Dev

将SQL语句转换为Linq

来自分类Dev

将PHP数组转换为SQL语句?

来自分类Dev

将if ... else语句转换为for循环