Перевод с с++ на js
Всем привет! Помогите перевести данный код на js. Если что он решает систему нелинейных и трансцендентных уравнений методом Стеффенсена.
Код:
#include <stdio.h> |
В JS нет аналогов функций printf и scanf, то есть это нельзя заменить одной строкой кода, нужно писать пользовательские, хотя они уже есть и готовые.
|
Я решил использовать input для написания
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Лабораторная работа</title>
</head>
<style>
.container{
border: 2px solid #127ABD;
padding: 10px;
}
div:nth-child(2){
display: inline-block;
}
div.warning{
color: red;
display: inline-block;
}
</style>
<body>
<div class="container">
<div><b>Количество неизвестных:</b><br>
<input id="n" type="text" size="12" placeholder="n" maxlength="1"></div>
<div><b>Вектор начальных приближений <div class="warning">(указывать через пробел)</div>:</b><br>
<input id="vector" type="text" size="12"></div>
<div><b>Погрешность вычислений.</b><br>
<input id="eps" type="text" size="12" placeholder="eps" maxlength="12"></div>
<div><b>Максимальное количество итераций </b><br>
<input id="count" type="text" size="12" placeholder="count" maxlength="3"></div>
<input id="button" type="submit" value="Решить">
<div class="result"></div>
</div>
</body>
<script src="jquery-3.3.1.js"></script>
<script>
var Steffensen = {
n:undefined,
vector:undefined,
eps:undefined,
count:undefined,
x:[n],
y:[n]
}
function solution(){
Steffensen.n = document.getElementById('n').value;
Steffensen.vector = document.getElementById('vector').value;
Steffensen.eps = document.getElementById('eps').value;
Steffensen.cont = document.getElementById('count').value;
//$('.result').append(Steffensen.n);
}
$('#button').click(function(){
solution();
});
</script>
</html>
|
И как поля ввода будут решать for (i=0; i<n; i++) scanf("%f", &x[i]);?
|
Плохо знаком с синтаксисом c++, это цикличный ввод? Можно буде взять эту строку и поделить её через .split() на отдельные кусочки и потом работать с ними. И можно добавить условия для ввода вектора, типо n = кол-ву аргументов
|
Цитата:
printf, это форматируемый вывод. Формат ожидаемого при вводе и трактуемого при выводе задается в аргументах функций. Конечно можно задать некие наборы, а затем выполнить расчет (аналогичное Steffensen на JS решение тоже должно быть). Но вопрос звучащий в теме тогда вообще можно было бы и не ставить. |
я думал получится перевести, ну ладно. Может есть какой-нибудь онлайн калькулятор и там взять js код
|
Цитата:
В общем то прочесть о функции scanf несложно. На JS вы не сможете обеспечить такой же функционал, но вы можете установить обработчик ввода в поля. Он должен проверять вводимые значения в поля согласно формату, а также запрещать ввод в последующие поля при пустых предыдущих. То есть, если поле определяющее количество неизвестных пусто, то ввод значений для &x[i], запрещен, так как определяет длину массива значений, что также нужно проверять в обработчик при вводе. Как можно видеть форматы %е, %f, %g определяют число с плавающей запятой. Разница в форматах заключается в следующем: f - формат d.ddd... e - формат в научной нотации (типа 1.2e2 и т.п.) g - шестизначная дробная часть То есть поля обеспечивающие ввод значений для соответствующих переменных должны иметь шаблоны рег. выражений для проверки ввода. Если обработчик обнаружил, что ввод корректен, количество неизвестных указано и введено, то выполняется функция. Соответственно можно организовать и вывод на экран, где printf("\n"); и подобные, это ненужное и бесполезное, ну а вывод в формате %e и %12.6f, это также не сложно для понимания. |
| Часовой пояс GMT +3, время: 02:59. |