【发布时间】:2013-01-06 10:23:08
【问题描述】:
我被困在解析 PHP 脚本中。
我想根据一组指令计算结果。指令由关键字和数字组成,每行用空格分隔。从文件加载指令并将结果输出到屏幕。可以指定任意数量的指令。指令是运算符(加、除、减、乘)。指令将忽略数学优先级。最后一条指令应该是“apply”和一个数字(例如,“apply 3”)。然后使用该数字初始化计算器,并将前面的指令应用于该数字。
[Input]
add 2
multiply 3
apply 3
[Output]
15
[解释] (3 + 2) * 3 = 15
例子
[Input]
multiply 9
apply 5
[Output]
45
谁能帮忙提供一些示例逻辑或代码?
这是我迄今为止尝试过的:
class calculator {
public
function calculate($expression) {
$expression = str_replace(' ', '', $expression);
return $this - > exec($expression);
}
private
function exec($expression) {
switch ($expression['op']) {
case 'add':
$r = $expression[0] + $expression[1];
break;
case 'subtract':
$r = $expression[0] - $expression[1];
break;
case 'multiply':
$r = $expression[0] * $expression[1];
break;
case 'divide':
$r = $expression[0] / $expression[1];
break;
}
return $r;
}
private
function parseExpression($expression) {
$blankspace = preg_match('/\s/', $expression);
$counter = count($expression);
}
}
【问题讨论】:
-
所以基本上它是从左到右的,除了把“应用X”贴在前面?输入的范围是多少?
-
raekye 感谢您的时间,输入是 textarea 每条指令都在一行中,下一条必须在新行中(例如:乘以 5,然后新行加 6,然后新行应用 3)我怎么能实现这个
-
你试过什么?好像您只是在请人为您编写代码。
-
我已经用我目前尝试过的方法更新了代码,但我可以正确的逻辑
-
感谢 samuel 的 jquer 解决方案