Spaces:
Running
Running
let display = document.getElementById('display'); | |
let chart; | |
function appendValue(value) { | |
display.value += value; | |
} | |
function clearDisplay() { | |
display.value = ''; | |
} | |
function calculate() { | |
try { | |
let expression = display.value; | |
let result = evaluateExpression(expression); | |
display.value = result; | |
} catch (error) { | |
display.value = 'Error'; | |
} | |
} | |
function evaluateExpression(expression) { | |
// Basic implementation, more robust parsing needed for complex expressions | |
expression = expression.replace(/[^-()\d/*+.]/g, ''); // Remove invalid characters | |
expression = expression.replace(/(\d+\.\d+)/g, parseFloat); // clean floats | |
expression = expression.replace(/(\d+)/g, parseInt); // clean integers | |
try { | |
return new Function('return ' + expression)(); | |
} catch (e) { | |
return 'Error'; | |
} | |
} | |
function deleteLast() { | |
display.value = display.value.slice(0, -1); | |
} | |
function plotGraph() { | |
const equation = document.getElementById('equation').value; | |
const xValues = []; | |
const yValues = []; | |
for (let x = -10; x <= 10; x += 0.5) { | |
xValues.push(x); | |
try { | |
// Replace x in the equation and evaluate | |
let y = evaluateExpression(equation.replace(/x/g, x)); | |
yValues.push(y); | |
} catch (error) { | |
alert("Invalid equation!"); | |
return; | |
} | |
} | |
// Destroy previous chart if it exists | |
if (chart) { | |
chart.destroy(); | |
} | |
const ctx = document.getElementById('myChart').getContext('2d'); | |
chart = new Chart(ctx, { | |
type: 'line', | |
data: { | |
labels: xValues, | |
datasets: [{ | |
label: equation, | |
data: yValues, | |
borderColor: 'blue', | |
fill: false | |
}] | |
}, | |
options: { | |
scales: { | |
x: { | |
type: 'linear', | |
position: 'bottom' | |
}, | |
y: { | |
type: 'linear', | |
position: 'left' | |
} | |
} | |
} | |
}); | |
} | |