L oop через сумму двух входов до удвоения (javascript) - PullRequest
0 голосов
/ 07 апреля 2020

Я застрял здесь с проблемой Дача. Есть 2 поля ввода для суммы и процентной ставки (%). Если вы нажмете на кнопку, на странице будет отображаться обзор баланса, пока сумма не будет удвоена. Взяв простые числа, например, 10 - это сумма, а 4 - 4%. Таким образом, результат должен остановиться на сумму 20.

document.getElementById("button").onclick = loop;

var inputB = document.getElementById("inputB");
var inputC = document.getElementById("inputC");
var result = document.getElementById("result")


 function loop() {
    var s = inputB.value;
    var r = inputC.value;
    var doubleS = s * 2;
    for (var i = 1; i <= doubleS; i++) {
        s = ((r / 100 + 1) * s);
        result.innerHTML += s + "<br>";
    }
 }
<! DOCTYPE html>
<html>
<body>

<br>
<input type="text" id="inputB" value="10"><br>
<input type="text" id="inputC"  value="4"><br><br>


<button id="button">Klik</button>

<p> De ingevoerde resultaten: </p>
<p id="result"></p>

<script async src="oefin1.js"></script>
</body>
</html>

Ответы [ 3 ]

0 голосов
/ 07 апреля 2020

Самый простой способ - просто использовать для l oop без запутанной математики с s в середине:

function loop() {
    var s = inputB.value;
    var r = inputC.value;
    var doubleS = s * 2;
    for (var i = s; i <= doubleS; i *= ((r / 100) + 1)) {
        result.innerHTML += i + "<br>";
    }
 }
0 голосов
/ 07 апреля 2020

используйте while l oop и проверьте, что значение s больше или равно doubleS

document.getElementById("button").onclick = loop;

var inputB = document.getElementById("inputB");
var inputC = document.getElementById("inputC");
var result = document.getElementById("result")


 function loop() {
    var s = inputB.value;
    var r = inputC.value;
    var doubleS = s * 2;
    while(true) {
        s = ((r / 100 + 1) * s);
        result.innerHTML += s + "<br>";
        if(s >= doubleS){
           break
        }
    }
 }
 <! DOCTYPE html>
<html>
<body>

<br>
<input type="text" id="inputB" value="10"><br>
<input type="text" id="inputC"  value="4"><br><br>


<button id="button">Klik</button>

<p> De ingevoerde resultaten: </p>
<p id="result"></p>

<script async src="oefin1.js"></script>
</body>
</html>
0 голосов
/ 07 апреля 2020

Проблема связана с вашими for l oop границами.

Это будет l oop doubleX количество раз: for (var i = 0; i < doubleX; i++)

Это будет l oop до x превосходит doubleX: for (;x < doubleX;), что, кстати, лучше записать с помощью while l oop: while (x < doubleX)

document.getElementById("button").onclick = loop;

var inputB = document.getElementById("inputB");
var inputC = document.getElementById("inputC");
var result = document.getElementById("result")

function loop() {
  var s = inputB.value;
  var r = inputC.value;
  var doubleS = s * 2;
  result.innerHTML = '';
  while (s < doubleS) {
    s = ((r / 100 + 1) * s);
    result.innerHTML += s + "<br>";
  }
}
<input type="text" id="inputB" value="10"><br>
<input type="text" id="inputC" value="4"><br><br>

<button id="button">Klik</button>

<p> De ingevoerde resultaten: </p>
<p id="result"></p>
...