我寫了一個極地功能的工具。它列出從輸入範圍那樣的值:如何從Perl中的用戶輸入解析數學函數?
0 Grad: (0 RAD|1 RES) 20 Grad: (0.349065850398866 RAD|1.3639702342662 RES) 40 Grad: (0.698131700797732 RAD|1.83909963117728 RES) 60 Grad: (1.0471975511966 RAD|2.73205080756888 RES) 80 Grad: (1.39626340159546 RAD|6.67128181961771 RES) 100 Grad: (1.74532925199433 RAD|4.67128181961771 RES) 120 Grad: (2.0943951023932 RAD|0.732050807568878 RES) 140 Grad: (2.44346095279206 RAD|0.16090036882272 RES) 160 Grad: (2.79252680319093 RAD|0.636029765733797 RES) 180 Grad: (3.14159265358979 RAD|1 RES)
它是基於函數
abs(1 + tan($_[0]));
如何可以解析從UserInput(Perl的語法)這樣的函數,並將其分配給一個變量的?
我想避免更改Perl腳本;使函數動態而不是靜態。
感謝您的閱讀。
編輯: 對不起quadrupelpost ....
感謝您的幫助,但下面的代碼片段給出了錯誤的價值觀:
print("Eingabe: Funktion (phi = $t); PERL syntax!: > ");
$iFunktion = <STDIN>;
chop($iFunktion);
print("Eingabe: Grad Start: > ");
$iGradStart = <STDIN>;
chop($iGradStart);
print("Eingabe: Grad End: > ");
$iGradEnd = <STDIN>;
chop($iGradEnd);
print("Eingabe: Schrittweite: > ");
$iSchrittweite = <STDIN>;
chop($iSchrittweite);
print("\nBerechne Funktion von $iGradStart bis $iGradEnd Grad mit einer Schrittweite von $iSchrittweite\n");
for ($i = $iGradStart; $i < $iGradEnd; $i = $i + $iSchrittweite)
{
$flRad = °2rad($i);
#$flResult = &Compute($flRad);
$t = $i;
$flResult = eval($iFunktion);
print("$i Grad: ($flRad RAD|$flResult RES) \n");
}
輸入是ABS(1 +褐色($ T)) ;
(額外的信息,從後續合併)
print("Eingabe: Grad Start: > ");
$iGradStart = <STDIN>;
chop($iGradStart);
print("Eingabe: Grad End: > ");
$iGradEnd = <STDIN>;
chop($iGradEnd);
print("Eingabe: Schrittweite: > ");
$iSchrittweite = <STDIN>; chop($iSchrittweite);
print("\nfrom $iGradStart to $iGradEnd Grad with $iSchrittweite\n");
for ($i = $iGradStart; $i <= $iGradEnd; $i = $i + $iSchrittweite)
{
$flRad = °2rad($i);
$flResult = &Compute($flRad);
print("$i Grad: ($flRad RAD|$flResult RES) \n");
}
sub Compute { return abs(1 + tan($_[0])); }
到目前爲止你有什麼? – 2009-11-02 14:39:03
一面評論:用chomp代替chop:更安全。 –
難道你不應該有$ t = $ flRad而不是$ t = $ i嗎? –