Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 06.07.2022
Сообщений: 3

Сумма нечетных чисел

06.07.2022, 15:19. Показов 1339. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такая вот задачка, подскажите как ее решить?

int task1(int n)
For a positive integer n calculate the result value, which is equal to the sum of the odd numbers of n.
Example:
n = 1234 -> result = 4
n = 246 -> result = 0

Examples
Code Sample:

...
System.out.println(LoopStatements.task1( 1234));
System.out.println(LoopStatements.task1( 246));
Output:

4
0
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.07.2022, 15:19
Ответы с готовыми решениями:

Сумма нечетных чисел
Только начала учить Java. Помогите исправить Нужно что бы находило сумму только нечетных чисел при вводе разных чисел float...

Массив: Если сумма четных чисел больше суммы нечетных, тогда сортировать по возрастанию...
Дана матрица (N+15)x(N+15), если сумма четных чисел больше суммы нечетных, тогда сортировать по возрастанию, иначе по убыванию, числа...

Сумма квадратов двух нечетных чисел
Можно ли представить заданное натуральное число в виде суммы квадратов двух нечетных чисел? Помогите, пожалуйста.

24
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
06.07.2022, 15:53
Разбей число на массив цифр
Циклом по массиву идешь и смотришь: если число нечетное - значит складываешь

Добавлено через 28 минут
Цитата Сообщение от StepFather322 Посмотреть сообщение
если число нечетное - значит складываешь
цифра*
1
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
06.07.2022, 15:58
Java
1
2
3
int task1(int n) {
  return IntStream.iterate(n, x -> x > 0, x -> x / 10).map(x -> x % 10).filter(x -> x % 2 == 1).sum();
}
1
0 / 0 / 0
Регистрация: 06.07.2022
Сообщений: 3
06.07.2022, 16:17  [ТС]
Цитата Сообщение от StepFather322 Посмотреть сообщение
Разбей число на массив цифр
Циклом по массиву идешь и смотришь: если число нечетное - значит складываешь
Спасибо, пробую.

Добавлено через 1 минуту
Цитата Сообщение от Arsegg Посмотреть сообщение
JavaВыделить код
1
2
3
int task1(int n) {
  return IntStream.iterate(n, x -> x > 0, x -> x / 10).map(x -> x % 10).filter(x -> x % 2 == 1).sum();
}
К сожалению, не проходит тест.
Test name: test1ExceptionCase
Failure message:
org.opentest4j.AssertionFailedError: Expected java.lang.IllegalArgumentException to be thrown, but nothing was thrown.
0
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
06.07.2022, 16:18
Цитата Сообщение от eonix Посмотреть сообщение
For a positive integer n
Цитата Сообщение от eonix Посмотреть сообщение
Expected java.lang.IllegalArgumentException to be thrown, but nothing was thrown.
чего то тебе не хватает
0
06.07.2022, 16:24

Не по теме:

Цитата Сообщение от StepFather322 Посмотреть сообщение
чего то тебе не хватает
птицы "Говорун" XD

0
0 / 0 / 0
Регистрация: 06.07.2022
Сообщений: 3
06.07.2022, 16:57  [ТС]
xoraxax,
Цитата Сообщение от StepFather322 Посмотреть сообщение
чего то тебе не хватает
Разобрался, эксепшина не хватало)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
06.07.2022, 22:08
Цитата Сообщение от StepFather322 Посмотреть сообщение
Разбей число на массив цифр
Циклом по массиву...
Самое плохое решение
0
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
06.07.2022, 23:55
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Самое плохое решение
На оптимальность я никогда не претендовал, но да, соглашусь. Можно не складывать в массив, а сразу проверять цифры. Тогда будет только один цикл. Есть еще варианты?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
07.07.2022, 00:05
Цитата Сообщение от StepFather322 Посмотреть сообщение
Есть еще варианты?
Навалом. Регуляркой четные достать и сложить

Добавлено через 1 минуту
Самое праильное, конечно - вариант Arsegg, только не стримом, а просто вайлом
0
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
07.07.2022, 00:05
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Регуляркой четные достать и сложить
Если это не шутка, то мне почему то всегда казалось, что "регулярки" и "оптимальное решение" живут в разных мирах. Разве нет? Цикли же в миллион раз быстрее чем регулярки
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
07.07.2022, 00:07
Цитата Сообщение от StepFather322 Посмотреть сообщение
"регулярки" и "оптимальное решение" живут в разных мирах
Именно так. Просто ты спросил про другие варианты...
0
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
07.07.2022, 00:10
iSmokeJC, выходит что мой первый подход еще не самый плохой, ведь есть регулярки
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
07.07.2022, 00:12
Java
1
2
3
4
5
6
7
        int x = 1234;
        int summ = 0;
        while (x > 0) {
            if (x % 2 == 1) summ += x % 10;
            x /= 10;
        }
        System.out.println(summ);
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38195 / 21128 / 4309
Регистрация: 12.02.2012
Сообщений: 34,733
Записей в блоге: 14
07.07.2022, 09:52
eonix, не путай цифры и числа (Будапешт и Бухарест, Гёте и Гейне и т.п.)

Java
1
2
3
4
5
6
7
8
9
10
11
12
public static int sumOddDigits(int n)
{
     int s=0;
     int p;
     while (n>0)
     {
           p=n%10;
           if (p%2==1) s+=p;
           n=n/10;
     }
     return s;
}

iSmokeJC, боюсь, у Вас ошибочка...
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
07.07.2022, 10:11
Как вариант:
Java
1
2
3
4
5
6
7
8
9
10
int task1(int n) {
  int result = 0;
  for (; n > 0; n /= 10) {
    final var d = n % 10;
    if (d % 2 == 1) {
      result += d;
    }
  }
  return result;
}
P. S. Преимущество функционального подхода, как по мне, отсутствие side-effects, ну и можно еще распараллелить вычисление суммы "из коробки".
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
07.07.2022, 11:18
Цитата Сообщение от Catstail Посмотреть сообщение
боюсь, у Вас ошибочка...
Где это?
1
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
07.07.2022, 12:01
Цитата Сообщение от Arsegg Посмотреть сообщение
отсутствие side-effects, ну и можно еще распараллелить вычисление суммы "из коробки"
распараллелить подсчет суммы цифр?
чем плохи в данном случае сайд эффекты?
2
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
07.07.2022, 12:58
Цитата Сообщение от xoraxax Посмотреть сообщение
распараллелить подсчет суммы цифр?
Конкретно в данном случае выгода сомнительна, т. к. оверхед. А вот для длинки, например, для более 1 млн. цифр, вполне имеет смысл применить принцип "Разделяй и властвуй", если используется многоядерная/многопроцессорная архитектура.
Цитата Сообщение от xoraxax Посмотреть сообщение
чем плохи в данном случае сайд эффекты?
А в чем их польза?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
07.07.2022, 13:05
Arsegg, скорее всего нет смысла даже для миллиона цифр. Если есть желание - можешь в jmh проверить.
While - простой как полено, и в нем того самого оверхеда. Поэтому использовать его предпочтительнее.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.07.2022, 13:05
Помогаю со студенческими работами здесь

Определить минимальное число из пары <сумма чётных> и <сумма нечётных> чисел в массиве
Здравствуйте! Есть задача: Написать программу определения заданной характеристики последовательности чисел C1, C2, …, Cn. Записать...

Количество подряд идущих нечетных натуральных чисел, начинающихся с 1, сумма которых не превышает чисел на 7
помогите найти количество подряд идущих нечетных натуральных чисел, начинающихся с 1, сумма которых не превышает чисел на 7

сумма нечетных чисел
1) Найти сумму первых 17 нечетных чисел 2) Найти сумму нечетных чисел от 15-го до 20-го

Сумма нечётных чисел
Кто-нибудь может подсказать как вычислять сумму нечётных чисел диапазона с 0 по 14, используя только if и оператор цикла for?

Сумма нечетных чисел
Доброго времени суток Нужна помощь в написании проги через директиву asm в паскале Условие Написать программу что подсчитывает суму...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru