Другие языки программирования и технологии

как задать переменной её нечётность??

мне надо найти сумму элементов массива, которые нечётные. самы элементы. так как мне для переменной задать: она нечётная??? или чётная, тогда нечетная, это чётная -1. помогите плиз!
Anton Kalinkin
Anton Kalinkin
1 262
язык?
Сергей Калыханов
Сергей Калыханов
8 584
Лучший ответ
Odd() - от нее пляши=)
Про четность целых чисел замечу что она определяется младшим битом ( веса разрядов ...8421, только 1 - нечетный, то есть когда выставлен этот бит, то целое число сразу нечетное ), то есть вы однозначно определяете четность следующий инструкцией ( ( a and $01 ) = 1 ) где a- исследуемая переменная, данное действие более быстрое чем ( ( a mod 2 ) = 1 ) и чисто технически будет быстрее функции not even(a) или odd(a), так как нет ( push a; call odd; pop res )

Операция and - однотактная, тогда как деление это многократное вычитание (то есть преобразование в обратный код: инверсия + 1).

тогда ваш код, где a - имя массива, если у вас не определены функции Hight() и Low(), для определения самого младшего и самого старшего индекса в массиве, то просто впишите их, I-индексная переменная, Sum-переменная накопитель

{сбрасываем сумму}
Sum := 0;
{перебираем элементы массива и добавляем к сумме те из них, которые нечетные}
for I := Low( a ) to Hight( a ) do
if ( ( a[ I ] and $01 ) = 1 ) then
Inc( Sum, a[ I ] );

Inc() - технически быстрее чем Sum := Sum + a[ I ], однако работает это только для целых чисел, так как числа с плавающей точкой четными и нечетными не бывают, то это вам подходит.
Вообще-то, в Паскале есть такая функция Odd(x: Longint): Boolean;
Если х - нечетное, то функция возвращает True, в противном случае - False.
т. е. if Odd(x) then...
Зачем выдумывать велосипед?
если qbasic:

IF x MOD 2 <> 0 then (т. е. остаток от деления на 2 не равен 0)
вычисляй сумму
ELSE
print "x-chetnoe"
end if

*х - твоя переменная
Просматриваешь массив от начала до конца. Делишь каждый элемент на 2 с остатком. Если остаток =1, то складываешь его с предыдущими. Вот так на псевдокоде:
sum=0
DO(i=1,2,...N)
if a [ i ] mod2 == 1 then sum=sum+a [ i ]
i=i+1
OD
Iwan G....
Iwan G....
1 574
Ну можешь попробовать делением на два, и если остается остаток, то число нечетное.
AY
Alisher Yusupow
761
Четность определяем как в начальной школе:
если делится на 2 без остатка, т. е. остаток=0, то число - четное,
если делится на 2 с остатком, т. е. остаток=1, то число - нечетное.

На Паскале в цикле проверяй каждый элемент массива:
***
Sum:=0;
For i:=1 to N do
If X mod 2 =1 Then Sum:=Sum+X;
***
Остальное допиши сам. Осталось только оформить задачку.
Дерзай!
Смотрите остаток от деления на 2. Если он равен 0, то четное, если больше 0, то нечетное.
Damir Tairov
Damir Tairov
423