【发布时间】:2020-01-23 18:32:55
【问题描述】:
我有一个方程:100 + (y * 5) = 200
我必须找到 y = (200 -100)/5 的值,但主要是运算符符号可能会发生变化(例如:100 * (y -5) = 200 ), 那么如何编写一个程序,如果方程通过,它会求解并给出 x 的值,而不管使用什么运算符。
感谢任何帮助。
我已经在节点 js 中尝试过,并且必须解决方程:
var fs = require('fs');
fs.readFile('equation.json',
// callback function that is called when reading file is done
function(err, data) {
// json data
var jsonData = data;
// parse json
var jsonParsed = JSON.parse(jsonData);
//operators array
var operators = {
"add":"+",
"subtract":"-",
"multiply":"*",
"divide":"/",
"equal":"="
};
var eq,op1,op2,equation;
for(opt in operators){
if(jsonParsed.op == opt){
eq = operators.equal;
}
//looking for first operator
if(jsonParsed.lhs.op == opt){
if(opt=="add"){
op1 = operators.add;
}
else if(opt=="subtract"){
op1 = operators.subtract;
}
else if(opt=="multiply"){
op1 = operators.multiply;
}
else if(opt=="divide"){
op1 = operators.divide;
}
}
//looking for second operator
if(jsonParsed.lhs.rhs.op == opt){
if(opt=="add"){
op2 = operators.add;
}
else if(opt=="subtract"){
op2 = operators.subtract;
}
else if(opt=="multiply"){
op2 = operators.multiply;
}
else if(opt=="divide"){
op2 = operators.divide;
}
}
}
//console.log(eq);
//console.log(op1);
//console.log(op2)
//parsing expression
equation = jsonParsed.lhs.lhs + op1 +"(" + jsonParsed.lhs.rhs.lhs + op2 + jsonParsed.lhs.rhs.rhs + ")" + eq + jsonParsed.rhs;
console.log(equation);
});
JSON
{
"op": "equal",
"lhs": {
"op": "add",
"lhs": 1,
"rhs": {
"op": "multiply",
"lhs": "x",
"rhs": 10
}
},
"rhs": 21
}
【问题讨论】:
-
我想你可以看看这个问题的答案:stackoverflow.com/questions/4514302/…
-
你想解决这个方程还是 any 方程?这是家庭作业还是您尝试完成工作?
-
这能回答你的问题吗? JavaScript equation solver library
标签: javascript node.js logic