107 lines
3.8 KiB
HTML
107 lines
3.8 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Лабораторная работа No7</title>
|
|
</head>
|
|
|
|
<body>
|
|
<div>
|
|
<label for="xMin">X min: </label>
|
|
<input type="number" id="xMin" value="5">
|
|
<label for="xMax">X max: </label>
|
|
<input type="number" id="xMax" value="10">
|
|
<label for="h">Шаг: </label>
|
|
<input type="number" id="h" value="0.1">
|
|
<br><br>
|
|
<label for="fn">Функция: </label>
|
|
<select id="fn">
|
|
<option value="f_1">f_1</option>
|
|
<option value="f_2">f_2</option>
|
|
<option value="f_3">f_3</option>
|
|
</select>
|
|
<br><br>
|
|
<h3>Характеристики</h3>
|
|
<label for="findMin">Найти минимум</label>
|
|
<input type="checkbox" id="findMin">
|
|
<label for="countPositive">Подсчитать количество положительных элементов</label>
|
|
<input type="checkbox" id="countPositive">
|
|
<label for="isMonotonous">Проверить монотонность</label>
|
|
<input type="checkbox" id="isMonotonous">
|
|
<br><br>
|
|
<h3>Варианты функции</h3>
|
|
<label for="memoization">Мемоизация</label>
|
|
<input type="checkbox" id="memoization">
|
|
<label for="debug">Отладка</label>
|
|
<input type="checkbox" id="debug">
|
|
<label for="countCalls">Подсчет количества вызовов</label>
|
|
<input type="checkbox" id="countCalls">
|
|
<br><br>
|
|
<button onclick="run()">Выполнить</button>
|
|
</div>
|
|
|
|
<div>
|
|
<h3>Результат:</h3>
|
|
<div id="result"></div>
|
|
</div>
|
|
|
|
<script src="script.js"></script>
|
|
<script>
|
|
function run() {
|
|
const xMin = document.getElementById('xMin').value;
|
|
const xMax = document.getElementById('xMax').value;
|
|
const h = document.getElementById('h').value;
|
|
const fn = document.getElementById('fn').value;
|
|
|
|
const isFindMin = document.getElementById('findMin').checked;
|
|
const isCountPositive = document.getElementById('countPositive').checked;
|
|
const isIsMonotonous = document.getElementById('isMonotonous').checked;
|
|
|
|
const isMemoization = document.getElementById('memoization').checked;
|
|
const isDebug = document.getElementById('debug').checked;
|
|
const isCountCalls = document.getElementById('countCalls').checked;
|
|
|
|
func = f_1;
|
|
if (fn == 'f_1')
|
|
func = f_1;
|
|
else if (fn == 'f_2')
|
|
func = f_2;
|
|
else if (fn == 'f_3')
|
|
func = f_3;
|
|
|
|
if (isMemoization)
|
|
func = memoize(func);
|
|
if (isDebug)
|
|
func = debug(func);
|
|
if (isCountCalls)
|
|
func = countCalls(func);
|
|
|
|
characteristics = [];
|
|
names = []
|
|
if (isFindMin) {
|
|
characteristics.push(findMin);
|
|
names.push('Минимум');
|
|
}
|
|
if (isCountPositive) {
|
|
characteristics.push(countPositive);
|
|
names.push('Кол-во положительных');
|
|
}
|
|
if (isIsMonotonous) {
|
|
characteristics.push(isMonotonous);
|
|
names.push('Монотонность');
|
|
}
|
|
|
|
const chars = calculateCharacteristics(func, Number(xMin), Number(xMax), Number(h), characteristics);
|
|
console.log(chars);
|
|
|
|
const result = document.getElementById('result');
|
|
names.forEach((name, index) => {
|
|
result.innerHTML += name + ': ' + chars[index] + '<br>';
|
|
})
|
|
}
|
|
</script>
|
|
</body>
|
|
|
|
</html> |