熊猫 发表于 2007-4-4 12:44:00

算24点

<embed pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" src="http://www.magic-nano.com/webedit/uploadfile/200744123547749.SWF" type="application/x-shockwave-flash" quality="high" style="WIDTH: 550px; HEIGHT: 400px;"></embed>

天堂伞 发表于 2007-4-4 12:45:00

。。。3547

叶碧溪 发表于 2007-4-4 12:46:00

某人很能算的

熊猫 发表于 2007-4-4 12:49:00

<div style="WIDTH: 800px; HEIGHT: 600px;"><embed pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" src="http://www3.flash8.net/uploadflash/29/flash8net_28149.swf" type="application/x-shockwave-flash" quality="high" style="WIDTH: 700px; HEIGHT: 600px;"></embed></div>
[此贴子已经被作者于2007-4-4 12:52:25编辑过]

︶ㄣ比目鱼︶ㄣ 发表于 2007-4-4 12:50:00

死细胞的....

叶碧溪 发表于 2007-4-4 12:51:00

。。。。

№西远£訷話 发表于 2007-4-4 12:52:00

熊猫 发表于 2007-4-4 12:54:00

//牌初始显示<br/>p1.gotoAndStop(5);<br/>p2.gotoAndStop(18);<br/>p3.gotoAndStop(31);<br/>//表达式计算<br/>ebtn.onPress = function() {<br/>&nbsp;out2.text = evalString(input2.text);<br/>};<br/>//随机产生四个数<br/>RandBtn.onRelease = function() {<br/>&nbsp;//预存52张牌,不含王。<br/>&nbsp;var p54:Array=;<br/>&nbsp;//抽四张牌<br/>&nbsp;var p4:Array=[];<br/>&nbsp;for(var i=0;i&lt;4;i++){<br/>&nbsp;&nbsp;p4.push(p54.splice(random(p54.length),1));<br/>&nbsp;}<br/>&nbsp;//牌显示<br/>&nbsp;for(var i=0;i&lt;p4.length;i++){<br/>&nbsp;&nbsp;_root["p"+(i+1)].gotoAndStop(p4);<br/>&nbsp;}<br/>&nbsp;//数据显示<br/>&nbsp;input.text =p4%13 +","+p4%13+","+p4%13+","+p4%13;<br/>};<br/>//计算按钮<br/>evalBtn.onRelease = function() {<br/>&nbsp;var inStr:String = input.text;<br/>&nbsp;//删除字串中的空格<br/>&nbsp;var i = 0;<br/>&nbsp;while (true) {<br/>&nbsp;&nbsp;i = inStr.indexOf(" ", i);<br/>&nbsp;&nbsp;if (i == -1) {<br/>&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;inStr = inStr.slice(0, i)+inStr.slice(i+1);<br/>&nbsp;}<br/>&nbsp;var N4:Array = inStr.split(",");<br/>&nbsp;//以“,”号撤分<br/>&nbsp;var Lok = eval24(N4);<br/>&nbsp;out.text = "";<br/>&nbsp;if (Lok.length == 0) {<br/>&nbsp;&nbsp;out.text = "我没算出来!";<br/>&nbsp;} else {<br/>&nbsp;&nbsp;for (var i = 0; i&lt;Lok.length; i++) {<br/>&nbsp;&nbsp;&nbsp;out.text += Lok+"\n";<br/>&nbsp;&nbsp;}<br/>&nbsp;}<br/>};<br/>//计算函数<br/>function eval24(Num4:Array) {<br/>&nbsp;var Num4i;<br/>&nbsp;var Num4j;<br/>&nbsp;var Num4k;<br/>&nbsp;var Num4m;<br/>&nbsp;var res1:Array = [];<br/>&nbsp;var res2:Array = [];<br/>&nbsp;for (var i = 0; i&lt;4; i++) {<br/>&nbsp;&nbsp;Num4i = Number(Num4);<br/>&nbsp;&nbsp;for (var j = 0; j&lt;4; j++) {<br/>&nbsp;&nbsp;&nbsp;if (i != j) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;Num4j = Number(Num4);<br/>&nbsp;&nbsp;&nbsp;&nbsp;var PArray1:Array = [];<br/>&nbsp;&nbsp;&nbsp;&nbsp;var PArray2:Array = [];<br/>&nbsp;&nbsp;&nbsp;&nbsp;//A任取两个数运算<br/>&nbsp;&nbsp;&nbsp;&nbsp;PArray1.push(Num4i+Num4j);<br/>&nbsp;&nbsp;&nbsp;&nbsp;PArray2.push("("+Num4i+"+"+Num4j+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;PArray1.push(Num4i-Num4j);<br/>&nbsp;&nbsp;&nbsp;&nbsp;PArray2.push("("+Num4i+"-"+Num4j+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;PArray1.push(Num4j-Num4i);<br/>&nbsp;&nbsp;&nbsp;&nbsp;PArray2.push("("+Num4j+"-"+Num4i+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;PArray1.push(Num4i*Num4j);<br/>&nbsp;&nbsp;&nbsp;&nbsp;PArray2.push("("+Num4i+"*"+Num4j+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;PArray1.push(Num4i/Num4j);<br/>&nbsp;&nbsp;&nbsp;&nbsp;PArray2.push("("+Num4i+"/"+Num4j+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;PArray1.push(Num4j/Num4i);<br/>&nbsp;&nbsp;&nbsp;&nbsp;PArray2.push("("+Num4j+"/"+Num4i+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;for (var k = 0; k&lt;4; k++) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (j != k &amp;&amp; i != k) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Num4k = Number(Num4);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var m = 0; m&lt;4; m++) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (k != m &amp;&amp; j != m &amp;&amp; i != m) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Num4m = Number(Num4);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var kArray1:Array = [];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var kArray2:Array = [];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//B剩下两个数的运算<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray1.push(Num4k+Num4m);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray2.push("("+Num4k+"+"+Num4m+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray1.push(Num4k-Num4m);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray2.push("("+Num4k+"-"+Num4m+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray1.push(Num4m-Num4k);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray2.push("("+Num4m+"-"+Num4k+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray1.push(Num4k*Num4m);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray2.push("("+Num4k+"*"+Num4m+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray1.push(Num4k/Num4m);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray2.push("("+Num4k+"/"+Num4m+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray1.push(Num4m/Num4k);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray2.push("("+Num4m+"/"+Num4k+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var a = 0; a&lt;PArray1.length; a++) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var b = 0; b&lt;kArray1.length; b++) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//(A#B)#(C#D)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res1.push(PArray1+kArray1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res2.push(PArray2+"+"+kArray2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res1.push(PArray1-kArray1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res2.push(PArray2+"-"+kArray2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res1.push(kArray1-PArray1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res2.push(kArray2+"-"+PArray2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res1.push(PArray1*kArray1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res2.push(PArray2+"*"+kArray2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res1.push(PArray1/kArray1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res2.push(PArray2+"/"+kArray2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res1.push(kArray1/PArray1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res2.push(kArray2+"/"+PArray2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;//((A#B)#C)#D<br/>&nbsp;&nbsp;&nbsp;&nbsp;for (var k = 0; k&lt;4; k++) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (j != k &amp;&amp; i != k) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Num4k = Number(Num4);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var l = 0; l&lt;PArray1.length; l++) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var kArray1:Array = [];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var kArray2:Array = [];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray1.push(PArray1+Num4k);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray2.push("("+PArray2+"+"+Num4k+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray1.push(PArray1-Num4k);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray2.push("("+PArray2+"-"+Num4k+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray1.push(Num4k-PArray1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray2.push("("+Num4k+"-"+PArray2+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray1.push(PArray1*Num4k);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray2.push("("+PArray2+"*"+Num4k+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray1.push(PArray1/Num4k);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray2.push("("+PArray2+"/"+Num4k+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray1.push(Num4k/PArray1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kArray2.push("("+Num4k+"/"+PArray2+")");<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var m = 0; m&lt;4; m++) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (k != m &amp;&amp; j != m &amp;&amp; i != m) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Num4m = Number(Num4);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var n = 0; n&lt;kArray1.length; n++) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res1.push(kArray1+Num4m);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res2.push(kArray2+"+"+Num4m);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res1.push(kArray1-Num4m);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res2.push(kArray2+"-"+Num4m);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res1.push(Num4m-kArray1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res2.push(Num4m+"-"+kArray2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res1.push(kArray1*Num4m);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res2.push(kArray2+"*"+Num4m);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res1.push(kArray1/Num4m);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res2.push(kArray2+"/"+Num4m);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res1.push(Num4m/kArray1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res2.push(Num4m+"/"+kArray2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;}<br/>&nbsp;}<br/>&nbsp;var retArray:Array = [];<br/>&nbsp;for (var m = 0; m&lt;res2.length; m++) {<br/>&nbsp;&nbsp;//if (Number(res1)&gt;=23.99 &amp;&amp; Number(res1)&lt;=24.01) {<br/>&nbsp;&nbsp;if (res1 == 24) {<br/>&nbsp;&nbsp;&nbsp;var ok:Boolean = true;<br/>&nbsp;&nbsp;&nbsp;for (var i = 0; i&lt;retArray.length; i++) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ((res2+"="+res1) == retArray) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok = false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;if (ok) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;retArray.push(res2+"="+res1);<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;}<br/>&nbsp;}<br/>&nbsp;return retArray;<br/>}<br/>//计算字串表达式的值<br/>//参数:字串计算表达式,只能有数字(可以是小数和负数),+ - * / ( )等符号,自动忽略空格。<br/>function evalString(表达式:String):Number {<br/>&nbsp;//删除字串中的空格<br/>&nbsp;var i = 0;<br/>&nbsp;while (true) {<br/>&nbsp;&nbsp;i = 表达式.indexOf(" ", i);<br/>&nbsp;&nbsp;if (i == -1) {<br/>&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;表达式 = 表达式.slice(0, i)+表达式.slice(i+1);<br/>&nbsp;}<br/>&nbsp;var 堆栈:Array = ["@"];<br/>&nbsp;//栈底标记"@"<br/>&nbsp;var a, b, c, d:String, Err:String = "ok";<br/>&nbsp;var _fh = 1;<br/>&nbsp;//正负号<br/>&nbsp;var posN = "";<br/>&nbsp;// 扫描表达式<br/>&nbsp;for (var i = 0; i&lt;表达式.length; i++) {<br/>&nbsp;&nbsp;switch (表达式.charAt(i)) {<br/>&nbsp;&nbsp;case "(" :<br/>&nbsp;&nbsp;&nbsp;//左括号前面是数字,就插入乘号,否则就直接入栈。即左括号前的乘号可以省略。<br/>&nbsp;&nbsp;&nbsp;d = 表达式.charAt(i-1);<br/>&nbsp;&nbsp;&nbsp;if ((d&gt;"0" &amp;&amp; d&lt;"9") || d == ")") {<br/>&nbsp;&nbsp;&nbsp;&nbsp;堆栈.push("*");<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;堆栈.push(表达式.charAt(i));<br/>&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;case ")" :<br/>&nbsp;&nbsp;&nbsp;//右括号则退栈计算,直到遇见一个左括号<br/>&nbsp;&nbsp;&nbsp;b = 堆栈.pop();<br/>&nbsp;&nbsp;&nbsp;c = 堆栈.pop();<br/>&nbsp;&nbsp;&nbsp;a = 堆栈.pop();<br/>&nbsp;&nbsp;&nbsp;if (堆栈.pop() == "(") {<br/>&nbsp;&nbsp;&nbsp;&nbsp;堆栈.push(计算两数(a, c, b));<br/>&nbsp;&nbsp;&nbsp;} else {<br/>&nbsp;&nbsp;&nbsp;&nbsp;//请拖动“组件”Alert到舞台上,然后删除,它就出现在库中了<br/>&nbsp;&nbsp;&nbsp;&nbsp;//这样才能利用下面的弹出提示信息窗口。<br/>&nbsp;&nbsp;&nbsp;&nbsp;mx.controls.Alert.show("括号不匹配!", "表达式错误");<br/>&nbsp;&nbsp;&nbsp;&nbsp;return Number("");<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;case "*" :<br/>&nbsp;&nbsp;case "/" :<br/>&nbsp;&nbsp;&nbsp;//如果前一个运算符为*或/,则退栈计算,再入栈,否则直接入栈 <br/>&nbsp;&nbsp;&nbsp;d = 堆栈[堆栈.length-2];<br/>&nbsp;&nbsp;&nbsp;if (d == "*" || d == "/") {<br/>&nbsp;&nbsp;&nbsp;&nbsp;b = 堆栈.pop();<br/>&nbsp;&nbsp;&nbsp;&nbsp;c = 堆栈.pop();<br/>&nbsp;&nbsp;&nbsp;&nbsp;a = 堆栈.pop();<br/>&nbsp;&nbsp;&nbsp;&nbsp;堆栈.push(计算两数(a, c, b));<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;堆栈.push(表达式.charAt(i));<br/>&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;case "-" :<br/>&nbsp;&nbsp;&nbsp;//判断是减号?还是负号?<br/>&nbsp;&nbsp;&nbsp;d = 表达式.charAt(i-1);<br/>&nbsp;&nbsp;&nbsp;if (i == 0 || d == "(" || d == "/" || d == "*") {<br/>&nbsp;&nbsp;&nbsp;&nbsp;_fh = -1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;case "+" :<br/>&nbsp;&nbsp;&nbsp;//如果前一个运算符不是左括号也不是栈底,则退栈计算,再入栈 <br/>&nbsp;&nbsp;&nbsp;d = 堆栈[堆栈.length-2];<br/>&nbsp;&nbsp;&nbsp;if (d != "(" &amp;&amp; d != "@") {<br/>&nbsp;&nbsp;&nbsp;&nbsp;b = 堆栈.pop();<br/>&nbsp;&nbsp;&nbsp;&nbsp;c = 堆栈.pop();<br/>&nbsp;&nbsp;&nbsp;&nbsp;a = 堆栈.pop();<br/>&nbsp;&nbsp;&nbsp;&nbsp;堆栈.push(计算两数(a, c, b));<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;堆栈.push(表达式.charAt(i));<br/>&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;default :<br/>&nbsp;&nbsp;&nbsp;//如果是数字字符或者小数点则转化为数字<br/>&nbsp;&nbsp;&nbsp;posN += 表达式.charAt(i);<br/>&nbsp;&nbsp;&nbsp;//如果下一个字符是运算符则把当前数字压入栈中<br/>&nbsp;&nbsp;&nbsp;d = 表达式.charAt(i+1);<br/>&nbsp;&nbsp;&nbsp;if (!(d != "." &amp;&amp; (d&gt;"9" || d&lt;"0"))) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;堆栈.push(parseFloat(posN)*_fh);<br/>&nbsp;&nbsp;&nbsp;posN = "";<br/>&nbsp;&nbsp;&nbsp;_fh = 1;<br/>&nbsp;&nbsp;}<br/>&nbsp;}<br/>&nbsp;//扫描完毕,计算栈中乘下数据<br/>&nbsp;do {<br/>&nbsp;&nbsp;b = 堆栈.pop();<br/>&nbsp;&nbsp;c = 堆栈.pop();<br/>&nbsp;&nbsp;a = 堆栈.pop();<br/>&nbsp;&nbsp;堆栈.push(计算两数(a, c, b));<br/>&nbsp;} while (堆栈.length&gt;3);<br/>&nbsp;var ret = Number(堆栈.pop());<br/>&nbsp;if (Err == "除数为零") {<br/>&nbsp;&nbsp;mx.controls.Alert.show("除数为零!", "错误:");<br/>&nbsp;} else if (堆栈.pop() != "@" || isNaN(ret)) {<br/>&nbsp;&nbsp;mx.controls.Alert.show("请检查计算表达式!", "错误:");<br/>&nbsp;}<br/>&nbsp;//返回结果&nbsp; <br/>&nbsp;return ret;<br/>&nbsp;//计算两个数<br/>&nbsp;function 计算两数(a, 运算符, b):Number {<br/>&nbsp;&nbsp;var ret = 0;<br/>&nbsp;&nbsp;if (运算符 == "+") {<br/>&nbsp;&nbsp;&nbsp;ret = a+b;<br/>&nbsp;&nbsp;} else if (运算符 == "-") {<br/>&nbsp;&nbsp;&nbsp;ret = a-b;<br/>&nbsp;&nbsp;} else if (运算符 == "*") {<br/>&nbsp;&nbsp;&nbsp;ret = a*b;<br/>&nbsp;&nbsp;} else if (运算符 == "/") {<br/>&nbsp;&nbsp;&nbsp;if (!b) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;Err = "除数为零";<br/>&nbsp;&nbsp;&nbsp;&nbsp;return Number("");<br/>&nbsp;&nbsp;&nbsp;} else {<br/>&nbsp;&nbsp;&nbsp;&nbsp;ret = a/b;<br/>&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;}<br/>&nbsp;&nbsp;return ret;<br/>&nbsp;}<br/>}<br/>

熊猫 发表于 2007-4-4 12:55:00

<p>不是我写的,仅仅只是看的懂一部分,,感谢网友<a href="http://space.flash8.net/bbs/profile-uid-409182.html">ybzjllj</a>
        </p>

冰封爱 发表于 2007-4-4 22:01:00

<p>有几段素废的。。还可以再简洁一点。。。</p>

猴子很忙 发表于 2007-4-4 22:10:00

<p>4个数算24</p><p>貌似大二的时候用C写过,递归一下,用不了几行</p>

荷兰猪 发表于 2007-4-4 22:38:00

<p></p><p>真长啊....</p><p>没有特别需要的话...</p><p>用basic不是更简洁?</p>

⒎哖以後 发表于 2007-4-5 03:28:00

额。。。。。。

半只菜青虫 发表于 2007-4-5 07:45:00

捣蛋鬼 发表于 2007-4-5 08:51:00

伤脑筋啊

卑小鄙 发表于 2007-4-5 10:44:00

(5-1/5)*5=24

fimqad 发表于 2007-4-5 10:52:00

传说中的算牌器
页: [1]
查看完整版本: 算24点