|
查看: 1536|回复: 17
|
c++ 讀取用戶自定義函數
[复制链接]
|
|
|
在c++ 要如何讀取用戶自定義函數呢?
比如
讓用戶可輸入 x+3 x^2+6x+7 xsinx-6x
等等之類的
這類編程要怎麼做? |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 5-4-2010 10:13 PM
|
显示全部楼层
呃...我的問題寫的不夠清楚嗎@@
我其實是想寫一些program
比如bisection method/newton's method 之類的
然後用iteration來找出approximation...
我想寫不固定於某一函數(讓用戶輸入f(x)) |
|
|
|
|
|
|
|
|
|
|
发表于 5-4-2010 11:20 PM
|
显示全部楼层
可以尝试用cin, cout来prompt user input.
int x,fx
cout<<"Please enter number x: ";
cin>>x
你的function就放这里,比如fx = x*x + 6*x + 7;
cout <<"Result is: "<<fx<<endl;
记得用math.h,会帮你省很多时间 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 6-4-2010 01:17 AM
|
显示全部楼层
我要的f(x) 是由用戶輸入
不是由我來固定某單一函數 |
|
|
|
|
|
|
|
|
|
|
发表于 6-4-2010 11:02 AM
|
显示全部楼层
|
那就是計算機囉,Google找一下calculator的演算法。 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 7-4-2010 12:12 PM
|
显示全部楼层
我上網找了資料 理解到這類問題需要什麽知識了
就是 parser (我沒學過 也從來沒看過)
有沒有人懂得parser的呢? 如果是c++的 更佳.... |
|
|
|
|
|
|
|
|
|
|
发表于 7-4-2010 02:51 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 8-4-2010 01:40 AM
|
显示全部楼层
这个逆波兰表达式 之前也在google有search到类似的东西
我大概读了一些(中文的笔记)
大概了解是做什么用的
不过不懂得如何转换成逆波兰表达式@@
不过还是谢谢你的链接
我觉得 是因为我对programming的认识还不够深
打算假期时再自修 |
|
|
|
|
|
|
|
|
|
|
发表于 8-4-2010 10:25 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 8-4-2010 04:32 PM
|
显示全部楼层
本帖最后由 img3nius 于 8-4-2010 04:37 PM 编辑
嗯 中文的我也看了(code在英文的那邊也是有)
現在大概有些頭緒大概該怎麼做 但是不確定我的想法對不對(還在考試 假期回家才嘗試 )
不過對於輸入有variable的expression還是完全不懂該如何改 如 2x siny 之類的
還有就是...
我上網下載了一些code(parser 的 )
大部份都是超長的 (200+~600+ line的都有)
是不是要寫一個能輸入有variable的expression的program (包括sin cos tan factorial exponenial等function)
最少都要這麼長啊.... |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 12-5-2010 09:06 PM
|
显示全部楼层
已经做得到了
计算机上我懂得用的运算符几乎都可以用了
不过我是用java做的
我想问 jTextField 要如何从右填到左啊? |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 12-5-2010 09:11 PM
|
显示全部楼层
已经做得到了
用逆波兰表达式 很好用= =
计算机里我懂得的运算符 大部分都可以使用了
不过我是用java的
我想问 jTextField 如果由右开始填文本啊? 第一次用java
还有jFrame怎样可以显示中文或日文啊? |
|
|
|
|
|
|
|
|
|
|
发表于 13-5-2010 09:41 PM
|
显示全部楼层
|
Java要設定特定字型才能顯示多國語文,如sansserif, Dialog。 |
|
|
|
|
|
|
|
|
|
|
发表于 15-5-2010 09:51 PM
|
显示全部楼层
|
樓主應該是要用到 LEX & YACC 之類的技術。Java / C# 暫時應該比較難。 |
|
|
|
|
|
|
|
|
|
|
发表于 15-5-2010 10:19 PM
|
显示全部楼层
也可以考虑embed一些现成的interpretor,例如tcl 之类的。然后可以用expr
- #include "tcl.h"
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- Tcl_Interp *myinterp;
- char *aaa = "puts [expr 1+3*4+5] ";
- myinterp = Tcl_CreateInterp();
- Tcl_Eval(myinterp,aaa);
- }
复制代码 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 31-5-2010 08:49 PM
|
显示全部楼层
回复 15# tensaix2j
呃.... 看不明白= ="
我最近都在读java 我上述所提到的也是用java 做的...
很久没碰c++了@@...
不过还是谢谢你们的解答 |
|
|
|
|
|
|
|
|
|
|
发表于 2-6-2010 12:26 PM
|
显示全部楼层
.. java 也没问题。只要你的interp有支援的话。。
不过如果你不喜欢tcl,也可以去找python的interp。
- import tcl.lang.*;
- class tcltest {
- public static void main( String[] args) {
- Interp interp = new Interp();
- try{
- String aaa = " puts [expr 1+2*3+4/5+6*7] ";
- interp.eval(aaa);
- } catch ( Exception ex) {
- }
- }
- }
复制代码 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 3-6-2010 08:46 PM
|
显示全部楼层
interp?tcl? 我還沒在java參考書内看過這兩個字眼@@
是java其中的兩個類嗎?
python是編程語言? 還沒學過... |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|