Перевод с с++ на 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, время: 05:50. |