7
Янв

Задачи по JavaScript с решениями: найти все натуральные числа из промежутка от 1 до 200, у которых сумма цифр равна S

Категория: Универ

Программирование на языке JavaScript.

Задача: Найти все натуральные числа из промежутка от 1 до 200, у которых сумма цифр равна S.

Решение:


<!DOCTYPE>
<html>
<head>
<title>Задачи по JavaScript</title>
</head>
<body>
<script>
function f_click() {
var div1 = document.getElementById("1").value;
var b_lines = document.getElementById('lines');
var x=div1.length;
var r=0;
var t='';
for( var i = 1; i <=200; ++i ) {
for(var j = 0; j <i.toString().length ; ++j ){
r=r+parseInt(i.toString().charAt(j));
}
if (r==parseInt(div1)){
t=t+' '+i;}
r=0;
}
b_lines.innerHTML=t;
}
</script>
Введите число S: <br />
<input id='1' name="login" type="text" size="25" maxlength="30" value="" /> <br />
<input type="button" name="enter" value="Расчет" onclick="f_click()" />
<div style="margin: 0 auto;width: 200px; font-size:25px" id="lines"></div>
</body>
</html>

Копируем выше описанный код в какой-нибудь текстовый редактор (лучше в Notepad++) и сохраняем файл в формате HTML.

Используемые функции и методы в коде:

document.getElementById(id) - возвращает элемент по заданному id для дальнейшей работы с ним.

.value - возвращает значение "value" элемента.

.length - длина массива, в данном случае длина строки.

.toString() - преобразование в строку.

parseInt() - преобразование в число.

.charAt(i) - обращение к символу строки по индексу i.

.innerHTML - получает, изменяет содержание элемента.

Идея:

Вводим наше число S (желательно простое число), нажимаем "Расчет" после чего срабатывает функция f_click(). В переменной div1 храним наше число S, а в x - его длину. В цикле for перебираем натуральные числа от 1 до 200. Во втором цикле for высчитываем сумму цифр каждого натурального числа, чтобы потом сравнить ее в цикле if с введенным ранее числом S. Найденные натуральные числа выводятся по центру документа в блоке div c с id="lines".

Все хорошо работает, но есть небольшое "Но". Код работает не со всеми числами S, только от 1 и до 19. И я, к сожалению, понятия не имею почему...

Похожие записи:

Оставить комментарий

Я не спам! (обязательно)

Подписаться, не комментируя