Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.51/231: Рейтинг темы: голосов - 231, средняя оценка - 4.51
 Аватар для s3lfstyle
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 72

Найти сумму цифр в числе

09.06.2015, 21:43. Показов 45063. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
JavaScript
1
2
3
4
5
6
7
8
9
10
var a = prompt("Введите число","");
var b = 0;
if(a == 0) {
    alert("Сумма чисел равна 0");
}
for(var i = a; i > 0; i/10) {
        b += a%b;
    }
}
alert(b);
Только начал учить JS, почему не работает данный код?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.06.2015, 21:43
Ответы с готовыми решениями:

как сделать?объясните(найти сумму цифр во введенном числе)
Создать документ, с формой, позволяющей найти сумму цифр, во введенном пользователем числе. я только могу сделать так,что бы...

Найти сумму последних двух цифр числа
найти сумму последних двух цифр числа пример: вход 1234 выход 7 если тема не в том разделе перенесите пожалуйста

Посчитать среднее арифметическое цифр в числе
почему не работает? var a=prompt("введите число"); var arr=; arr=a.split(""); var len=arr.length-1; var sum=0; for(var...

22
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
09.06.2015, 22:30
)))
синтаксис
вы в 9 строке лишнюю скобку поставили
учите, учите
0
-13 / 16 / 8
Регистрация: 20.04.2015
Сообщений: 62
09.06.2015, 22:30
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var strNum = prompt("Введите число", "");
var result = 0;
 
// Простой вариант, если число в виде строки
for (var i = 0; i < strNum.length; i++)
  result += Number(strNum[i]);
 
console.log(result);
  
// Вариант с числами
var nums = prompt("Введите число", "");
var length = nums.length;      // Количество цифр
nums = Number(nums);           // Переводим строку в число
 
var temp = 0;                  // Для хранения цифр
var result = 0;                // Конечный результат
 
for (var i = 0; i < length; i++) {
  temp = nums % 10;            // Сохраняем цифру в переменной
  result += temp;              // Складываем цифры числа
  nums = parseInt(nums /10);   // Переходим к следующей цифре в числе
}
  
 
console.log(result);
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
09.06.2015, 22:35
s3lfstyle, и действительно, на работоспособность ваш код даже и не стал проверять, а зря
0
 Аватар для s3lfstyle
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 72
09.06.2015, 22:47  [ТС]
JavaScript
1
2
3
4
5
6
7
8
9
10
var a = prompt("Введите число","");
var b = 0;
if(+a == 0) {
    alert("Сумма чисел равна 0");
}
for(var i = +a; i > 0; i = i/10) {
        b += +a%10;
    }
 
alert(b);
Почему мне возвращается 1968?
Код ведь правильный.
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
09.06.2015, 22:51
у меня тоже хрень возвращается
а вот этот работает

Цитата Сообщение от buxtom Посмотреть сообщение
var strNum = prompt("Введите число", "");
var result = 0;
// Простой вариант, если число в виде строки
for (var i = 0; i < strNum.length; i++)
* result += Number(strNum[i]);
console.log(result);
// Вариант с числами
var nums = prompt("Введите число", "");
var length = nums.length; * * *// Количество цифр
nums = Number(nums); * * * * * // Переводим строку в число
var temp = 0; * * * * * * * * *// Для хранения цифр
var result = 0; * * * * * * * *// Конечный результат
for (var i = 0; i < length; i++) {
* temp = nums % 10; * * * * * *// Сохраняем цифру в переменной
* result += temp; * * * * * * *// Складываем цифры числа
* nums = parseInt(nums /10); * // Переходим к следующей цифре в числе
}
console.log(result);


Добавлено через 1 минуту
s3lfstyle, ваш код к сожалению не правильный
ну во первых вы не перебираете всю строку
во-вторых вы зачем-то берёте остаток
0
 Аватар для s3lfstyle
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 72
09.06.2015, 22:53  [ТС]
А почему?
В чём причина?

Добавлено через 1 минуту
Я принимаю строку, проверяю не равно ли число a нулю, затем в цикле for складываю последние цифры числа при этом "удаляя" последнюю цифру из числа.
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
09.06.2015, 22:53
s3lfstyle, понял почему берёте остаток
но всё равно не перебираете строку
а вообще buxtom вам дал готовое рабочее решение
0
 Аватар для s3lfstyle
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 72
09.06.2015, 22:55  [ТС]
В его решении миллион строк, я просто не могу понять, почему моё решение не работает? Я вообще не вижу в своём решении ошибок. Зачем мне перебирать строку, если я перевожу эту строку в число?
0
-13 / 16 / 8
Регистрация: 20.04.2015
Сообщений: 62
09.06.2015, 22:56
1. проблема в вашем коде в том, что операция деления в JavaScript при делении целого на целое автоматически не отбрасывает дробную часть, т. е. как минимум вы должны явно приводить к целому числу отбрасывая дробную часть

2. в строке:
JavaScript
1
b += +a%10
вы используете переменную, значение которой не изменяется..., чтобы именно ваш код работал, можете переделать его по такому виду:
JavaScript
1
2
3
4
5
6
7
8
9
10
var a = prompt("Введите число","");
var b = 0;
if(+a == 0) {
    alert("Сумма чисел равна 0");
}
for(var i = +a; i > 0; i = parseInt(i/10)) {
        b += +i%10;
    }
 
alert(b);
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
09.06.2015, 22:57
ну потому что for у вас просто перебирает строку, что вообще-то нельзя делать вот таким способом
0
 Аватар для s3lfstyle
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 72
09.06.2015, 22:59  [ТС]
Это из-за динамической типизации?
Я понял, просто в языках со строгой типизацией int целочисленное и записывается без дробной части.

Добавлено через 54 секунды
А здесь получается у меня после i = i/10 число не "отбрасывает" последнее число, а становится с плавающей точкой.
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
09.06.2015, 23:00
вот вам хард кор

JavaScript
1
2
3
4
5
res=0
s=prompt("");
s= [].slice.call(s);
s.forEach(function(i){res+=(+i)});
alert(res);
Добавлено через 27 секунд
хотя врое проще чем ваши всякие там for
1
 Аватар для s3lfstyle
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 72
09.06.2015, 23:01  [ТС]
Не понял 90% вашего кода, рановато мне пока такое.
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
09.06.2015, 23:04
s3lfstyle, нету тут челочисленных
тут просто числа с плавающей запятой
тут и не надо собственно говоря тип переменной определять она может в себе хранить всё что угодно

а вот такой код не должен воспринимать никакие запятые и буквы, он их должен просто отвергать

Добавлено через 35 секунд
s3lfstyle, я знаю, это хард кор

Добавлено через 23 секунды
и насколько я помню он и не примет
0
 Аватар для s3lfstyle
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 72
09.06.2015, 23:04  [ТС]
Немного не могу понять parseInt(), в чём его задача?
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
09.06.2015, 23:06
а вот фиг

как только появляется не число он nan выдаёт
надо изменить

вот вам нормальный код
JavaScript
1
2
3
4
5
res=0
s=prompt("");
s= [].slice.call(s);
s.forEach(function(i){res+=(+i)||0});
alert(res);
0
-13 / 16 / 8
Регистрация: 20.04.2015
Сообщений: 62
09.06.2015, 23:07
Цитата Сообщение от s3lfstyle Посмотреть сообщение
Немного не могу понять parseInt(), в чём его задача?
например здесь можно прочитать, как работает эта функция
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
09.06.2015, 23:12
а теперь давайте разясню))

Добавлено через 4 минуты
JavaScript
1
2
3
4
5
6
7
res=0
s=prompt("");
s= [].slice.call(s);// превращение строки в массив
s.forEach(function(i){// функция перебора массива
res+=(+i)||0// тут логика такая, приплюсовываем либо число, а если это было не число(то есть parseInt вернул NaN) то приплюсовать 0(ну просто мне нехочется использовать if...else и решил использовать сокращённую форму)
});
alert(res);
это перебор массива
а вот с превращением строки в массив - это хак js
как и сокращённый if else
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
09.06.2015, 23:28
buxtom, ваш код неправильный
уже после первого шага цикла переменная a в 9-ти случаях из 10-ти у вас станет числом с дробной частью

JavaScript
1
2
3
4
5
6
7
8
function SoN ()
{
var a = prompt('Введите натуральное число', '');
if (isNaN (a)) {if (confirm ('Вы ввели вообще не число\nПопробуете снова?')) SoN ()}
else if (a != parseInt (Math.abs (a))) {if (confirm ('Вы ввели не натуральное число\nПопробуете снова?')) SoN ()}
else {for (var s = a, b = 0; +a > 0; b += a % 10, a = Math.floor (a / 10)); alert(' Сумма цифр числа ' + s + ' равна ' + b)}
}
SoN ();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.06.2015, 23:28
Помогаю со студенческими работами здесь

Функция расположения цифр в числе в порядке убывания
Есть задачка по созданию функции, которая располагает цифры любого заданного целого положительного числа в порядке убывания. Если не...

Найти количество цифр "3" и "5" в числе
Найти количество цифр &quot;3&quot; и &quot;5&quot; в числе JavaScript

Найти все целые числа из интервала от N до M, которые делятся на сумму всех своих цифр
Есть задание: Найти все целые числа из интервала от N до M, которые делятся на сумму всех своих цифр. Вот заготовка: &lt;html&gt; ...

Получить сумму цифр в числе
&lt;script&gt; function isLucky(n) { var Line = String(n); var line = Line.split(''); var answer,sum1=0,sum2=0; for (let...

Найти количество цифр в числе
&lt;script&gt; var numb1 = prompt(&quot;Введите число : &quot;, ); function getDigitAmount(n) { var c = 1; while (( n /= 10)&gt;=1) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru