Stack Overflow на русском Asked on November 24, 2021
Код выполняет такую задачу:
Напишите программу, которая получает на вход три целых числа a, b ,c,
после чего выводит список чисел x, которые находятся между a и b и
делятся на c без остатка. Гарантируется, что числа a, b, c – целые
У меня вот такие вопросы:
код
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<script>
function Complete()
{
let a, b, c;
a = document.Sel1.a.value;
b = document.Sel1.b.value;
c = document.Sel1.c.value;
var step;
for (step = a; step <= b; step++) {
result = step%c;
if (result == 0)
console.log (step + ' ');
}
}
</script>
</head>
<body>
<h1>Введите значения:</h1>
<form name="Sel1">
<p> a: <input name="a" onblur="this.value=this.value.toUpperCase()"></p>
<p> b: <input name="b" onblur="this.value=this.value.toUpperCase()"></p>
<p> c: <input name="c" onblur="this.value=this.value.toUpperCase()"></p>
<!-- Кнопки готовности и сброса -->
<input type="button" value="Готово" onClick="Complete();">
<input type="reset" value="Сброс">
</form>
</body>
</html>
В JS строки кодируются в UTF-16 и сравниваются посимвольно (кодовую таблицу символов можно найти в интернете). Для ваших примеров:
(например: 5-9 или 10-20 будет работать, а уже 5-10 - нет)
сравнение кодов будет выглядеть следующим образом: 53 <= 57 (для 5-9); 49 <= 50 (для 10-20) и 53 <=49 (для 5-10).
Для поиска мин/макс значений можете воспользоваться методами стандартного встроенного объекта Math:
let a, b, c;
a = Number(document.Sel1.a.value);
b = Number(document.Sel1.b.value);
c = Number(document.Sel1.c.value);
let mxValue = Math.max(a, b);
let mnValue = Math.min(a, b);
а в цикле уже
for (let step = mnValue; step <= mxValue; step++) {...}
Answered by azlov on November 24, 2021
function Complete() {
let a, b, c;
a = +document.Sel1.a.value;
b = +document.Sel1.b.value;
c = +document.Sel1.c.value;
let arr = [a,b].sort( (a,b) => a - b );
for (let step = arr[0]; step <= arr[1]; step++) {
let result = step % c;
if(result === 0) console.log(step);
}
}
Answered by fortavey on November 24, 2021
Это связано с тем, что в step <= b
сравниваются строки.
a = +document.Sel1.a.value;
b = +document.Sel1.b.value;
c = +document.Sel1.c.value;
if (b < a) {
a = +document.Sel1.b.value;
b = +document.Sel1.a.value;
}
Answered by Igor on November 24, 2021
Я решил это так:
function complete(e) {
e.stopPropagation();
e.preventDefault();
let sel = document.getElementById('Sel1'),
a = sel.elements.a,
b = sel.elements.b,
c = sel.elements.c,
res = [];
for (let i = +a.value + 1; i < b.value; i++) {
if (i % c.value === 0) {
res.push(i);
}
}
console.log(res);
}
document.getElementById('e').addEventListener('click', complete);
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body>
<form id="Sel1">
<input type="text" name="a" placeholder="a">
<input type="text" name="b" placeholder="b">
<input type="text" name="c" placeholder="c">
<input type="submit" id="e" value="Подсчитать">
<input type="reset" value="очистить">
</form>
</body>
</html>
Answered by Voprositel on November 24, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP