Форум myROBOT.ru » Лаборатория » Алгоритмы » Как отличить четное от не четного ?

Страниц (1): [1]
 

1. nestandart - 23 Октября, 2012 - 16:59:50 - перейти к сообщению
Вот сижу и думаю как научить программу различать четные и не четные числа.
Должна быть какая то простая арифметическая последовательность результат которой будет либо 1 либо 0 (зависит от того четное первоначальное число или нет).
Перебираю варианты , но что то пока ничего.

Очень не хочется городить говнокод

что то вроде

if(a==1&&a==3&&a==5&&a==7&&a==9)
{
действие 1
}

if(a==2&&a==4&&a==6&&a==8&&a==10)
{
действие 2
}

Что подскажите ?
2. СКАЗОЧНИК - 23 Октября, 2012 - 17:14:29 - перейти к сообщению
Просто есть способ деления с остатком. А потом проверять этот остаток, если больше нуля, то число нечетное...
Я так думаю.
(Добавление)
Т.е. я хотел сказать, что делить надо на 2. =)
(Добавление)
Как это в программе на Си выглядит, сейчас не вспомню. Надо операторы вспоминать.
3. elmot - 23 Октября, 2012 - 17:21:11 - перейти к сообщению
вы чо, ребята???
CODE:
if(a & 1) {/*odd*/} else {/*even*/}
4. СКАЗОЧНИК - 23 Октября, 2012 - 17:24:40 - перейти к сообщению
Распишите мне как работает эта конструкция подробно. Пожалуйста. =)
А то я не могу догнать. Понимаю, что для МК, но не понимаю (a & 1).
Забыл просто.
5. nestandart - 23 Октября, 2012 - 17:46:41 - перейти к сообщению
Цитата:
А то я не могу догнать. Понимаю, что для МК, но не понимаю (a & 1).

Аналогично. В чистом СИ я не очень ориентируюсь.
6. elmot - 23 Октября, 2012 - 17:49:45 - перейти к сообщению
СКАЗОЧНИК пишет:
Распишите мне как работает эта конструкция подробно. Пожалуйста. =)
А то я не могу догнать. Понимаю, что для МК, но не понимаю (a & 1).
Забыл просто.

Это любой Си.
& - битовая операция И (не путать с логической И && ). a & 1 - младший бит, т.е. остаток от деления на 2.
1 - трактуется Си как true; 0 - как false.
7. Роботов - 23 Октября, 2012 - 18:10:42 - перейти к сообщению
Я так делал. Может конечно не оптимально, но работает.
CODE:
if(a%2 ==1){/*odd*/} else {/*even*/}
8. nest - 23 Октября, 2012 - 19:12:44 - перейти к сообщению
а на си никак нельзя нулевой бит байта проверить?
9. mihail - 23 Октября, 2012 - 19:25:06 - перейти к сообщению
elmot написал о проверке нулевого бита.
10. cjA - 26 Октября, 2012 - 21:33:09 - перейти к сообщению
В GameLogo вот так Голливудская улыбка
чету = round (у/2) -у/2
четх = round (х/2) -х/2
чет = четх+чету

пусть четх =0 ', это я уже для каких-то своих нужд четность декартовых координат вычислял, не помню уже.
11. anar - 28 Октября, 2012 - 14:42:27 - перейти к сообщению
nestandart пишет:
Вот сижу и думаю как научить программу различать четные и не четные числа.

Если для ардуино, то все очень просто:
CODE:

if(a % 2 > 0) // если a нечетное число, то что-то делаем.

12. cjA - 31 Октября, 2012 - 01:31:58 - перейти к сообщению
в ардуино есть опретаор % обозначающий четность?
В Си такого не было, ...
(Добавление)
nest а переполнение?
Вот я и боюсь что виртуальная машина GL с этим не справляется. Вспомнил я зачем четность считал, сейчас еще раз проверю и выдам создателям чтоб бошки не путали... Замешательство
13. elmot - 05 Ноября, 2012 - 16:35:12 - перейти к сообщению
% - это оператор остатка от деления. Есть в любом С
14. СКАЗОЧНИК - 06 Ноября, 2012 - 17:06:05 - перейти к сообщению
Вот про это я и писал. =) Про оператор "%"!!!! Просто забыл. После этого оператора остается только остаток от деления. Его и проверяем на 0. Если ноль, значит четное! =)
15. cjA - 25 Ноября, 2012 - 09:48:25 - перейти к сообщению
или минус четное, простите, если вам не знакомо разностороннее стремление к минимуму