저는 JavaScript가 처음이므로 선형 방정식을 해결하는 간단한 스크립트를 작성하려고합니다. 지금까지 필자의 스크립트는 "2x + 28 - 18x = 36 - 4x + 10"과 같은 양수의 선형 방정식을 풀었다. 나는 또한 "2x * 3x = 4/2x"와 같은 곱셈과 나눗셈을 포함하는 선형 방정식/대수학 문제를 풀 수 있기를 바랍니다.선형 방정식 및 JavaScript로 유사한 대수 문제 해결
나는 다음에해야 할 일에 대한 아이디어를 가지고 있지만, 지금은 스크립트가 너무 복잡하고 곱셈과 나눗셈을 추가하는 것이 더 복잡 할 것이라고 생각합니다.
아래는 내 스크립트입니다. 나는 내가 가지고있는 것을 향상시키고 단순화하는 방법과 곱셈과 나눗셈을 추가하는 가장 좋은 방법에 대한 몇 가지 조언을 원하고있다. JS 빈에
내 스크립트를 http://jsbin.com/ufekug/1/edit
내 스크립트를
getTotalX()
: 나는 두 가지 기능을 정의
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Problem Solver</title>
<script>
window.onload = function() {
// Total Xs on each side of equation
// Example problem: 5x + 2 = 10 - 2x
var leftSideXTotal = 0; // 5
var rightSideXTotal = 0; // -2
// Total integers on each side of equation
// Example problem: 5x + 2 = 10 - 2x
var leftSideIntTotal = 0; // 2
var rightSideIntTotal = 0; // 10
// Enter a math problem to solve
var problem = "5x + 2 = 10 - 2x";
// Remove all spaces in problem
// Example problem: 5x + 2 = 10 - 2x
problem = problem.replace(/\s/g,''); // 5x+2=10-2x
// Add + signs in front of all - signs
// Example problem: 5x + 2 = 10 - 2x
problem = problem.replace(/-/gi, "+-"); // 5x+2=10+-2x
// Split problem into left and right sides
// Example problem: 5x + 2 = 10 - 2x
var problemArray = problem.split("=");
var problemLeftSide = problemArray[0]; // 5x+2
var problemRightSide = problemArray[1]; // 10+-2x
// Split values on each side into an array
var problemLeftSideValues = problemLeftSide.split("+");
var problemRightSideValues = problemRightSide.split("+");
// Go through the left side values and add them up
for (var i = 0; i < problemLeftSideValues.length; i++) {
// Current value
var currentValue = problemLeftSideValues[i];
// Length of current value
var currentValueLength = currentValue.length;
if (currentValue.charAt(currentValueLength - 1) == "x") { //Check if current value is a X value
// Remove X from end of current value
currentValue = currentValue.split("x");
// Add to total Xs on left side
leftSideXTotal = Number(leftSideXTotal) + Number(currentValue[0]);
} else {
// Add to total integers on left side
leftSideIntTotal = Number(leftSideIntTotal) + Number(problemLeftSideValues[i]);
}
}
// Go through the right side values and add them up
for (var i = 0; i < problemRightSideValues.length; i++) {
// Current value
var currentValue = problemRightSideValues[i];
// Length of current value
var currentValueLength = currentValue.length;
if (currentValue.charAt(currentValueLength - 1) == "x") { //Check if current value is a X value
// Remove X from end of current value
currentValue = currentValue.split("x");
// Add to total Xs on right side
rightSideXTotal = Number(rightSideXTotal) + Number(currentValue[0]);
} else {
// Add to total integers on right side
rightSideIntTotal = Number(rightSideIntTotal) + Number(problemRightSideValues[i]);
}
}
// Compute
var totalXs = (leftSideXTotal - rightSideXTotal)
var totalIntegers = (rightSideIntTotal - leftSideIntTotal)
var solution = (totalIntegers/totalXs)
// Display solution
document.getElementById("divSolution").innerText = solution;
}
</script>
</head>
<body>
<div id="divSolution"></div>
</body>
</html>
이 꽤 흥미로운 질문이다. 제목을 줄이면 더 많은 답변자를 유치 할 수 있다고 생각합니다. –
'2x * 3x = 4/2x'는 실제로 선형 방정식이 아닙니다. – Rikonator
수정 된 제목. 선형 방정식을 선형 방정식 및 유사한 대수 문제로 변경했습니다. – user1822824