⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_49735.htm

📁 vc
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<p>
序号:49735 发表者:mm2003 发表日期:2003-08-13 14:20:57
<br>主题:谁有高招快来领分?
<br>内容:我有n组数据,想设计一个计算工具,通过用户自定义的计算公式来实现计算并生成一组新的数据,比如用A,B,C,E,F,用户希望生成G=((A*B+C*E)+F*2)/3,如何记忆这套公式(以便今后可修改),保证计算顺序,哪位高手有好的方法或有例子? 
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:萧一郎 回复日期:2003-08-13 14:25:29
<br>内容:用一个函数来表示这个公式不就可以了,类似<BR>double function(double A,double B,double C,double E,double F)<BR>{<BR>double G=0.0;<BR>G=((A*B+C*E)+F*2)/3;<BR>return G;<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:shenjie 回复日期:2003-08-13 14:27:57
<br>内容:大多数《数据结构》关于栈的例子就是实现这种公式记忆和计算的方法
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mm2003 回复日期:2003-08-13 14:34:00
<br>内容:两位大概没有明白我的意思,这个公式是用户自己设的,事先并不知道,如果我在编程时知道要计算G=((a*b+c*e)+f*2)/3,我还保存它干什末?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-08-13 14:43:38
<br>内容:同意shenjie说的。<BR>我的思想是:<BR>用户输入一段公式,你对其进行分析,可以采用逆波兰式的计算方法(可用栈来实现),你进行计算时,从栈中读数,进行计算。保存用户输入的公式,可以任其修改公式的内容。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mm2003 回复日期:2003-08-13 14:47:39
<br>内容:能给个例子吗?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-08-13 14:56:23
<br>内容:我没有例子,一直也没做过。<BR>就是你对用户输入的字符串进行分析,就好像是作计算器程序一样。<BR>用逆波兰式方式就不需要设置优先级了,分析好的数据放入栈中,然后出栈,进行计算。<BR><BR>你可以参考计算器程序作作。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mm2003 回复日期:2003-08-13 15:07:10
<br>内容:对不起,你的说法没法使我信服,这好象没有你说的那末简单,计算器程序是单步操作的,如何对字符串进行分析哪?你说的逆波兰法到底是个什末东东呢?期待有更好的方法!!!!!!!!!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:张志民 回复日期:2003-08-13 16:22:29
<br>内容:数据结构中有表达式求值的例子,对于每个运算符都有优先级,<BR>那个公式我觉得也可以看作表达式,将公式的内容一次压栈,<BR>遇到匹配的优先级时就计算值,以此类推!<BR>我说的不大明白,不过你看数据结构中的表达式求值,会有<BR>所启示!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-08-13 21:22:47
<br>内容:我只用伪语言给你写一下,具体实现自己写吧,最近我比较忙。<BR>由于逆波兰式需要技巧很多,我一时也写不出来,就用另一种方法写一下了。<BR><BR>将表达式中参数和你的程序中的参数映射一下,以下只用表达式中的参数。<BR>初始化两个堆栈&nbsp;&nbsp;s1一个用于存储操作数,s2另一个存放运算符<BR>用一个s字符读取存放在string中的表达式的第一个字符<BR>while( s不为空 || s2不为空 )<BR>{<BR>&nbsp;&nbsp; if( cs是字符 ) 则压入s1中<BR>&nbsp;&nbsp; else<BR>&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch( 比较s2中栈顶运算符和s的优先级 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '&lt;':<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将s压入s2中;s读取下一个字符;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '=':&nbsp;&nbsp;//这种情况只有脱括号时有<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 弹出s2栈顶的数;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '&gt;':<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 弹出s2的运算符*;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 弹出s1的数A;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 弹出s1的数B;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 进行A*B运算,运算结果压栈;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp; }<BR>}<BR>这样栈s1中会保存运算结果。<BR>优先级的定义如下:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp;)<BR>&nbsp;&nbsp;+&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&nbsp;&nbsp;&nbsp;&gt;<BR>&nbsp;&nbsp;-&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&nbsp;&nbsp;&nbsp;&gt;<BR>&nbsp;&nbsp;*&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&nbsp;&nbsp;&nbsp;&gt;<BR>&nbsp;&nbsp;/&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&nbsp;&nbsp;&nbsp;&gt;<BR>&nbsp;&nbsp;(&nbsp;&nbsp; &lt;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&nbsp;&nbsp;&nbsp;=<BR>&nbsp;&nbsp;)&nbsp;&nbsp; &lt;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<BR><BR>优先级定义可能有错误的地方,你修正一下吧。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mm2003 回复日期:2003-08-14 09:52:43
<br>内容:还是不明白,有没有简单的方法?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-08-14 10:47:57
<br>内容:用户输入的是字符串,你只用对其进行句法分析才可以。<BR>你那里不明白?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mm2003 回复日期:2003-08-14 11:00:06
<br>内容:你这套分析方法让人看不懂
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-08-14 11:01:23
<br>内容:不会吧,你转换成代码试试吧。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mm2003 回复日期:2003-08-14 11:21:17
<br>内容:如果用户用到SIN(),COS(),怎末处理呢?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -