php版的求表达式的真值表-TrueValueTable

贴上代码:
<?php
error_reporting(E_ALL & ~E_NOTICE);
$expression=$_GET['TrueTable']; //读取输入框数据
if(!empty($_GET['TrueTable'])){
$expression=strtoupper($expression); //将输入的小写字母,替代成大写字母
$expressionArr=str_split($expression); //将$expression转换成数组
foreach($expressionArr as $v){ //把字母放在 $varTotal数组中
if($v>='A' && $v<='Z'){
$varTotal[]=$v;
}
}
$varTotal = array_unique($varTotal); //去掉$varTotal数组中重复的字母
sort($varTotal); //$varTotal数组中字母正向排序
$varTotal1 = preg_replace("/([A-Z])/","$\\1",$varTotal); //$varTotal1数组中字母变成变量
$maxN = count($varTotal);
//$expressionArr = preg_replace("/([A-Z])/","$\\1",$expressionArr); //$expressionArr数组中字母变成变量
$newExpression=implode('',$expressionArr); //$expressionArr数组变成字符串
//echo $newExpression."<br />";
$newExpression= preg_replace("/([A-Z])->([A-Z])/","!\\1|\\2",$newExpression);
$newExpression= preg_replace("/(\(.*?\))->([A-Z])/","!\\1|\\2",$newExpression);
$newExpression= preg_replace("/(\(.*?\))->(.*?)/","!\\1|\\2",$newExpression);
$newExpression= preg_replace("/([A-Z])->(.*?)/","!\\1|\\2",$newExpression);
$expressionArr=str_split($newExpression); //将$expression转换成数组
$expressionArr = preg_replace("/([A-Z])/","$\\1",$expressionArr);
$newExpression=implode('',$expressionArr);
//echo $newExpression; }
?> <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>真值表查询1.0 BY:小臻</title>
</head>
<body>
<span style="color:red;text-align:center;"><h1>真值表查询1.0 BY:小臻</h1></span>
<div style="width:500px;margin:30px auto 0 auto;text-align:center;"> <form action="" method="get">
<input type="text" name="TrueTable" value="<?php echo $_GET['TrueTable'] ?>"/>
<input type="submit" value="确定"/> <br /> <br />
<!--<input type="reset" value="取消" /><br /><br />
<input type="button" value="∨" />
<input type="button" value="∧" />
<input type="button" value="┐" />
<input type="button" value="→" />
<input type="button" value="↔" /><br /><br />-->
</form>
<!--[ 说明:析取(∨) , 合取(∧) , 非(┐) , 蕴含(→) , 等价(↔) ]-->
<p>[ 说明:析取(|) , 合取(&) , 非(!) , 蕴含(->) , 等价(=) ]</p> <table width="300px" style="margin:30px auto 0 auto;text-align:center;border:1px solid #000;">
<?php
echo "<tr>";
if(!empty($_GET['TrueTable'])){
foreach($varTotal as $v){
echo "<td>{$v}</td>";
}
echo "<td>结果</td>";
$result=pow(2,$maxN); for($i=0;$i<$result;$i++){
$resultN[$i]=sprintf("%0{$maxN}d",decbin($i));
$resultN[$i]=str_split($resultN[$i]);
} foreach($resultN as $k=>$v){
echo "<tr>";
foreach($resultN[$k] as $k1=>$v1){
echo "<td>".$v1."</td>";
$varTotal2[$k1]=$varTotal1[$k1]."=".$v1;
//echo $varTotal2[$k1]." ";
eval($varTotal2[$k1].";");
} //echo $newExpression;
eval("\$varTotal3[] = ".$newExpression.";");
foreach($varTotal3 as $k2=>$v){
if($v==NULL){
$varTotal3[$k2]=0;
} }
echo "<td>".$varTotal3[$k]."</td>";
echo "</tr>";
}
//print_r($varTotal3);
} ?>
</table>
</div>
</body>
</html>
php版的求表达式的真值表-TrueValueTable的更多相关文章
- 写一函数,用来求表达式1+2+3+.....+n的值,并编写主函数
Description 写一函数,用来求表达式1+2+3+.....+n的值,并编写主函数.n由键盘输入. Input 输入一个整数 Output 输出表达式的值 Sample Input 5 Sam ...
- Effective Java 第三版——42.lambda表达式优于匿名类
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- Java版的Quartz表达式生成器,同时适用于Quartz.net(免费下载)
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...
- 紫书 习题7-13 UVa 817(dfs+栈求表达式的值)
题目链接 点击打开链接 这道题分为两个部分, 一用搜索枚举每种可能, 二计算表达式的值, 有挺多细节需要注意 特别注意我的代码中在计算表达式的值中用到了一个!(代码枚举中的!表示不加符号, 我现在说 ...
- 《c# 从入门经典》 (第6版) - 变量和表达式
1,程序就是对一系列数据的操作:数据最终是存储在内存中的0和1数据流:我们在桌面上的任何操作都会改变内存中的数据. 2,变量存储在计算机中占用着一定的内存空间 bit: 位,计算机的最小存储单位,存储 ...
- JavaScript高程第三版笔记-函数表达式
1⃣️递归 阶乘函数: function factorial(num){ ){ ; } ); } } 改装一:(arguments.callee指向正在执行的函数的指针,实现解耦) function ...
- C++实现求离散数学命题公式的真值表
一.实验内容 (1)求任意一个命题公式的真值表. (2)利用真值表求任意一个命题公式的主范式. (3)利用真值表进行逻辑推理. 注:(2)和(3)可在(1)的基础上完成. 二.实验目的 真值表是命题逻 ...
- python 求值表达式解析
采用中缀转后缀的算法. 注意我输入的格式. #注意格式 def suffix(st): listopt=[" "] listnum=[" "] for i in ...
- POJ-3295 Tautology---栈+表达式求值
题目链接: https://vjudge.net/problem/POJ-3295 题目大意: 输入由p.q.r.s.t.K.A.N.C.E共10个字母组成的逻辑表达式WFF 其中 ...
随机推荐
- [ORACLE]数据库之间复制表
---------------------------------------------------------------------------- -------------ORACLE数据库管 ...
- LRU算法&&LeetCode解题报告
题目 Design and implement a data structure for Least Recently Used (LRU) cache. It should support the ...
- linux内存管理系列 +CFS 图解
http://blog.chinaunix.net/uid-20543183-id-1930786.html http://blog.csdn.net/ustc_dylan/article/categ ...
- 刷leetcode
目前已经刷到了56题,才到1/3,后面越来越难,不知道能不能在面微软之前刷完.
- 非常全面的java基础笔试题
下面是java基础笔试题,当时我去笔试,做了1个小时(80道选择题,后面的简答题就没时间做了),结果很吓人,太挫了,最后被面试官忽悠去培训去了,呵呵.我偷偷把面试题弄了下来,用来学习吧,也希望能对你们 ...
- spring使用aop
基于spring-framework-4.1.7使用aop >>>>>>>>>>>>>>>>>&g ...
- Js 直接下载保存文件
//直接下载保存文件 function Download(filePath) { // 如果中间IFRAME不存在,则添加 if (!document.getElementById("_SA ...
- Orcle数据库恢复
不知道什么原因,服务器上的数据库报错:ORA-01033:ORACLE initialization or shutdown in progress 首先检查:监听文件的主机名及端口号是否更改 数据文 ...
- 自动化构建jenkins配置
1.安装jdk7+tomcat7 2.下载msi安装文件(我是win7上安装,下载地址 http://Jenkins-ci.org/),文件安装路径选择\tomcat\webapps. 3.安装成功之 ...
- 如何下载到最新的版本的Oracle Database
其实这不是一个很困难的事情,但是发现好多同学都不知道,其实只需直接访问Oracle的官网就可以找到,鉴于Oracle经常改到下载面也我这里直接粘贴下载地址 http://www.oracle.com/ ...