Цикл с нечетным порядком элементов а не результата элементов в java

Здравствуйте Есть такое условие.

a = 1, b = 5
for (x = a; x <= b; x = x + h)

Интервал равен от х_a до x_b нужно что бы складывались нечетные икcы в этом интервале (х1 + х3 + х5 + x_n - нечетный)

Например х1=2, х2=4, х3=6, x4=8, x5=12 (после равно это результат этой формулы x=x+h) , нужно сложить нечетные х1+х3+х5 , проверить сам порядок х а не его ответ. Ответ должен получиться если взять этот пример 20. (т.к. 2+6+12).

Надеюсь правильно объяснил. Спасибо всем уделившим внимание


Ответы (3 шт):

Автор решения: Aziz Umarov

Что то такое думаю.

a = 1, b = 5
sum = 0
for (x = a; x <= b; x = x + h) {
 if(((x-a)/h)%2 == 0) sum += x;
}

System.out.println(sum);

Не много изменил код. С суммированием понятно. Небольшая загвоздка с условием. Значит вам нужны нечётные причем считать вы начинаете с 1.

x-а даст вам сколько h вы добавили к х. Делим на h получаем множитель. Нужно проверить его на четность поскольку вы считаете с 1.

→ Ссылка
Автор решения: Павел Ериков

Ладно приведу и свой пример, то как я понял ваше условие.

a и b это промежуток, а h это шаг изменения x на промежутке.

И нужно найти сумму элементов на нечетных позициях.

int a = 0, b = 2, sum = 0;
double h = 0.5;

//Сам x (не порядок)
double x = h;
//i - порядок икса
//Увеличиваем порядок каждую итерацию на 1 и проверяем, чтобы он был нечетным
//А сам x увеличиваем каждую итерацию на нужный нам шаг h
for (int i = a; i <= b; i++, x += h) {
    //Если порядок нечетный
    if (i % 2 == 1)
        sum += x;
}

System.out.println(sum);

Ответ программы: 1

 0   1   2
0.5  1  1.5 => sum = 1
→ Ссылка
Автор решения: Sergey Chernikov

Мне кажется, что вопрос не совсем корректный. Вам нужно именно с теми двумя строчками кода что-то выкрутить? Если задача заключается в том, что дается какой-то интервал и нужно найти сумму всех его нечетных значений, то это можно решить с помощью потока данных.

    int positionA = 1;
    int positionB = 5;
    
    int result =
    IntStream
        .range(positionA, positionB+1)
        .filter(x -> x%2==1)
        .sum();
    
→ Ссылка