【发布时间】:2009-11-02 14:35:07
【问题描述】:
我为极坐标函数编写了一个工具。它列出了输入范围中的值,如下所示:
0 毕业:(0 RAD|1 RES) 20 研究生:(0.349065850398866 RAD|1.3639702342662 RES) 40 研究生:(0.698131700797732 RAD|1.83909963117728 RES) 60 届毕业生:(1.0471975511966 RAD|2.73205080756888 RES) 80 届毕业生:(1.39626340159546 RAD|6.67128181961771 RES) 100 研究生:(1.74532925199433 RAD|4.67128181961771 RES) 120 研究生:(2.0943951023932 RAD|0.732050807568878 RES) 140 研究生:(2.44346095279206 RAD|0.16090036882272 RES) 160 研究生:(2.79252680319093 RAD|0.636029765733797 RES) 180 毕业生:(3.14159265358979 RAD|1 RES)基于函数
abs(1 + tan($_[0]));
如何从 UserInput(Perl 语法)解析这样的函数并将其分配给变量?
我想避免更改 Perl 脚本;使函数动态而不是静态。
问候并感谢您的阅读。
编辑: 抱歉,四重柱……
感谢您的帮助,但以下 sn-p 给出了错误的值:
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 + tan($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])); }
【问题讨论】:
-
到目前为止你有什么?
-
附注:用chomp代替chop:更安全。
-
你不应该有 $t = $flRad 而不是 $t = $i 吗?