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 其中 ...
随机推荐
- 12种超酷HTML5 SVG和CSS3浮动标签效果
这是一组效果很炫酷的SVG和CSS3表单浮动标签特效.这组浮动标签特效共12种效果,这些浮动标签效果部分在元素的伪元素上使用CSS transitions和CSS animations完毕,一部分则使 ...
- PAT---1013. Battle Over Cities (25)
这道题目的意思是:在战争时代,如果一个城市被敌人占领了,那么和该城市相连的道路都必须关闭,我们必须把剩下的城市(即不包括被敌人占领的城市)连接起来. 举个例子,我们有3个城市,C1,C2,C3,C1和 ...
- [Webpack 2] Maintain sane file sizes with webpack code splitting
As a Single Page Application grows in size, the size of the payload can become a real problem for pe ...
- verview of Spring Framework--转
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/overview.html 2. Introduct ...
- App升级时数据库的迁移更新
前一段时间在进行App升级的时候,由于一开始版本初期没有考虑完善,导致走了很多弯路,后来经过自己的一些思考,总结出了一些在app升级的时候,数据库内文件同步保持更新的经验,希望能给大家带来帮助. 总体 ...
- vi 使用笔记
基本A 当前行追加J 去除本行和下一行之间的换行符(写CSS利器)~ 光标所在处的字符进行大小写互换* 向前搜索目前光标所在的单词# 向后搜索目前光标所在的单词% 查找与光标所在处相匹配的反括号, 包 ...
- guid 新建
var guid = Guid.NewGuid();foreach (var i in new string[] { "P", "N", "B&quo ...
- PHP提高编程效率的方法,你知道多少呢?
PHP语言是最WEB的计算机语言,而且也是应用最广泛的语言,那么PHP对编程的影响有多大呢?下面可以去了解一下. 用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜 ...
- T-SQL切割字符串方法小结 2
有表tb, 如下: id value ----------- ----------- 1 aa,bb 2 aaa,bbb,ccc 欲按id,分拆value列, 分拆后结果如下: id value -- ...
- Cisco AnyConnect “Failed to initialize connection subsystem”的解决方案
Per Cisco: Microsoft has released a fix-it patch providing a workaround for this issue. See KB# 3023 ...