powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / нечетные числа
44 сообщений из 44, показаны все 2 страниц
нечетные числа
    #33843042
AngelSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подскажите, есть в с++ встроенная функция, определяющая четное число или нечетное? (что-то вроде odd в Паскале)
...
Рейтинг: 0 / 0
нечетные числа
    #33843081
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вряд ли существует. напиши макрос, например:

Код: plaintext
1.
#define odd(x) (x% 2 )
...
Рейтинг: 0 / 0
нечетные числа
    #33843115
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngelSQLподскажите, есть в с++ встроенная функция
С++ такой фигнёй не занимается :)
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
нечетные числа
    #33843120
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngelSQLподскажите, есть в с++ встроенная функция, определяющая четное число или нечетное? (что-то вроде odd в Паскале)

чёт от нечета отличается только младшим битиком ... Вы его можете отдетектить маленькой кучкой своих подходов...

с уважением
(круглый)
...
Рейтинг: 0 / 0
нечетные числа
    #33843158
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0
чёт от нечета отличается только младшим битиком ... Вы его можете отдетектить маленькой кучкой своих подходов...


Точно. ступил.

Код: plaintext
1.
#define odd(x) (x& 1 )

Так будет лучше.
...
Рейтинг: 0 / 0
нечетные числа
    #33843190
ZeusTheTrueGod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни один нормальный программист не будет юзать такие макросы, потому что из-за этого появятся труднонаходимые ошибки.
Поэтому юзайте
Код: plaintext
bool odd(int x) {return x% 2 ;}
...
Рейтинг: 0 / 0
нечетные числа
    #33843221
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZeusTheTrueGodНи один нормальный программист не будет юзать такие макросы, потому что из-за этого появятся труднонаходимые ошибки.
Поэтому юзайте
Код: plaintext
bool odd(int x) {return x% 2 ;}


в общем Вы правы...Есть только маленьчкое замечание....

остаток от деления - будет найден скорее всего (не проверял) методом сдвига в право на одын (оптимизатор сработает), сохранением результата в другой переменной и далее анализ...В Вашем случае, даже будет расход на колл и ретурн (у Вас же не инлайн). А в некоторых случаях Вам и инлайн не поможет (внешняя в дэлеле к примеру)...

проверка же младшего бита будет преобразована к азмовской команде test (для x86 имеется ввиду). И далее принятие решения...Что уже на одну команду меньше чем в Вашем примере (хотя возможно отдельная функция испоганит всё малину)... А если ышо убрать колл - ретурн и того прелесть...


с уважением
(круглый)
ЗЫ
Есть способ ышо циклический сдвиг и анализ на отрицательное число... Мона сдвинуть в перенос и обработать переход по переносу...Мона наложить маску и обработать переход по нулю... Да там мона хфантазировать достаточно долго :)
...
Рейтинг: 0 / 0
нечетные числа
    #33843244
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZeusTheTrueGodНи один нормальный программист не будет юзать такие макросы, потому что из-за этого появятся труднонаходимые ошибки.
Поэтому юзайте
Код: plaintext
bool odd(int x) {return x% 2 ;}


Да, вы что! Аргументы?
...
Рейтинг: 0 / 0
нечетные числа
    #33843257
Sandro_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
макрос
Код: plaintext
1.
#define odd(x) (x% 2 )
может вызвать ошибку если например написать:
Код: plaintext
1.
std::cout << odd( 3 + 1 ) <<"\n"
Поэтому если писать макрос, то x надо обязательно взять в скобки:
Код: plaintext
1.
#define odd(x) ((x)% 2 )

quot ZeusTheTrueGod]Ни один нормальный программист не будет юзать такие макросы, потому что из-за этого появятся труднонаходимые ошибки.
Поэтому юзайте
Код: plaintext
bool odd(int x) {return x% 2 ;}
[/quot]

Функции действительно безопаснее. На мой взгляд самым лучшим решением будет шаблонная функция:
Код: plaintext
1.
2.
template<typename T>
bool odd(T x) {return x% 2 ;}
...
Рейтинг: 0 / 0
нечетные числа
    #33843286
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandro_K
Поэтому если писать макрос, то x надо обязательно взять в скобки:

Согласен.

Sandro_K
Функции действительно безопаснее. На мой взгляд самым лучшим решением будет шаблонная функция:
Код: plaintext
1.
2.
template<typename T>
bool odd(T x) {return x% 2 ;}


Зависит от размера и разношерстности области пременимости.
...
Рейтинг: 0 / 0
нечетные числа
    #33844914
ZeusTheTrueGod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зато такой шаблон нельзя вставить в библиотеку
...
Рейтинг: 0 / 0
нечетные числа
    #33845171
Sandro_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZeusTheTrueGodЗато такой шаблон нельзя вставить в библиотеку
Да это конечно очень большая проблема. :)

Шаблон надо будет вставить в заголовочный файл, который будет распространяться вместе с библиотекой.
Вот обновленная версия, она должна быть не менее эффективна чем макрос:
Код: plaintext
1.
2.
template<typename T>
inline bool odd(T x) {return x& 1 ;}

Хотя я в своих программах скорее всего не буду писать ни макросов, ни функций, ни шаблонов, напишу просто x%2 или x&1 :)
...
Рейтинг: 0 / 0
нечетные числа
    #33845207
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandro_KХотя я в своих программах скорее всего не буду писать ни макросов, ни функций, ни шаблонов, напишу просто x%2 или x&1 :)

Я тоже не буду, есстественно. Человек просил... :)
...
Рейтинг: 0 / 0
нечетные числа
    #33845387
freebeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sandro_K
Вот обновленная версия, она должна быть не менее эффективна чем макрос:
Код: plaintext
1.
2.
template<typename T>
inline bool odd(T x) {return x& 1 ;}

Вопрос в студию: что данная функция вернет для типов double/float? :)
...
Рейтинг: 0 / 0
нечетные числа
    #33845419
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то, что она вернёт для дабла - фигня по сравнению с тем, что она вернёт для комплексного числа.
...
Рейтинг: 0 / 0
нечетные числа
    #33845527
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ругнется при компиляции, поскольку неявное преобразование будет с потерей информации
...
Рейтинг: 0 / 0
нечетные числа
    #33845554
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
freebeer
Вопрос в студию: что данная функция вернет для типов double/float? :)

Числа с плавающей точкой не бывают четными или не четными
...
Рейтинг: 0 / 0
нечетные числа
    #33845562
freebeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)ругнется при компиляции, поскольку неявное преобразование будет с потерей информации
Точно - error C2296: '&' : illegal, left operand has type 'double'
...
Рейтинг: 0 / 0
нечетные числа
    #33845600
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sorry сплоховал, она даже не пыталась его преобразовывать :)
...
Рейтинг: 0 / 0
нечетные числа
    #33845700
freebeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akh
Числа с плавающей точкой не бывают четными или не четными
4.0 -оно какое ?
...
Рейтинг: 0 / 0
нечетные числа
    #33845704
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
freebeer4.0 -оно какое ?
судя по всему, зависит от младшего бита
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
нечетные числа
    #33845762
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
freebeer Akh
Числа с плавающей точкой не бывают четными или не четными
4.0 -оно какое ?

не целое. Приблизительно 4 с точностью до первого знака после запятой. Ты это хотел услышать?
...
Рейтинг: 0 / 0
нечетные числа
    #33845776
Sandro_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня при попытки компиляции данного шаблона для типов double, float, и complex компилятор выдает ошибки. На мой взгляд это правильно.
Если число дробное то например 4.2 2.5 то нельзя сказать четное оно или нет
Если double содержит целое число, то пусть программист, при определении четное оно или нет, явно напишет преобразование типа.
Что касается комплексных чисел, то я вообще сильно сомневаюсь что они быть четными.
...
Рейтинг: 0 / 0
нечетные числа
    #33845804
freebeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akh[quot freebeer]
не целое. Приблизительно 4 с точностью до первого знака после запятой. Ты это хотел услышать?

Что не целое, я догадался :).. Определение четности, плз... И как оно соотносится с типом числа...
...
Рейтинг: 0 / 0
нечетные числа
    #33845819
Sandro_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
freebeer Akh[quot freebeer]
не целое. Приблизительно 4 с точностью до первого знака после запятой. Ты это хотел услышать?

Что не целое, я догадался :).. Определение четности, плз... И как оно соотносится с типом числа...

Чётность в теории чисел — характеристика целого числа, определяющая его способность делиться нацело на два. Если целое число делится на два, оно называется чётным (примеры: 2, 28, —8, 40), если нет — нечётным (примеры: 1,3, 75, —19). Нуль считается чётным числом.

Чётное число — целое число, которое делится на 2 без остатка: …−4,−2,0,2,4,6,8…

Нечётное число — целое число, которое не делится на 2 без остатка: …−3,−1,1,3,5,7,9…

Иными словами чётное и нечётное — собственные названия классов вычетов [0] и [1] по модулю 2.
...
Рейтинг: 0 / 0
нечетные числа
    #33845830
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
freebeer Akh[quot freebeer]
не целое. Приблизительно 4 с точностью до первого знака после запятой. Ты это хотел услышать?

Что не целое, я догадался :).. Определение четности, плз... И как оно соотносится с типом числа...

Гугол в руки и пошел. Или у детей своих спроси. :)
...
Рейтинг: 0 / 0
нечетные числа
    #33845836
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
нечетные числа
    #33845837
freebeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только целое число в теории чисел не совсем то, что тип Целое в программировании....
...
Рейтинг: 0 / 0
нечетные числа
    #33845851
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
freebeerТолько целое число в теории чисел не совсем то, что тип Целое в программировании....

Не надо отмазываться ущербностью компьютера при решении задач.
...
Рейтинг: 0 / 0
нечетные числа
    #33845854
Sandro_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
freebeerТолько целое число в теории чисел не совсем то, что тип Целое в программировании....
Ты гонишь, если у тебя в типе double хранится целое число с точки зрения теории чисел, то когда будешь четность определять преобразуй его явно в целое
Код: plaintext
 odd((int)x)
...
Рейтинг: 0 / 0
нечетные числа
    #33846589
freebeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akh freebeerТолько целое число в теории чисел не совсем то, что тип Целое в программировании....

Не надо отмазываться ущербностью компьютера при решении задач.

Я не про ущербность компьютера, я про ущербность приведенного решения.
Оно закладывается на то, что
1. на входе будет только целое число
2. при недопустимом типе начнет ругатся компилятор

IMHO, это слишком много допущений.

К тому же, в начальном условии задачи
AngelSQL
подскажите, есть в с++ встроенная функция, определяющая четное число или нечетное? (что-то вроде odd в Паскале)
нет указания на то, что тип числа для анализа - целое. Следовательно, данное решение не является ни правильным, ни полным.

Sandro_K
Ты гонишь, если у тебя в типе double хранится целое число с точки зрения теории чисел, то когда будешь четность определять преобразуй его явно в целое


А зачем? Разумнее сделать решение для типа double (нпр используя функцию fmod)

P.S. С утра принял -день свободен......
...
Рейтинг: 0 / 0
нечетные числа
    #33846798
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
freebeerЯ не про ущербность компьютера, я про ущербность приведенного решения.
Оно закладывается на то, что
1. на входе будет только целое число
2. при недопустимом типе начнет ругатся компилятор

IMHO, это слишком много допущений.

К тому же, в начальном условии задачи
AngelSQL
подскажите, есть в с++ встроенная функция, определяющая четное число или нечетное? (что-то вроде odd в Паскале)
нет указания на то, что тип числа для анализа - целое. Следовательно, данное решение не является ни правильным, ни полным.

Sandro_K
Ты гонишь, если у тебя в типе double хранится целое число с точки зрения теории чисел, то когда будешь четность определять преобразуй его явно в целое


А зачем? Разумнее сделать решение для типа double (нпр используя функцию fmod)


1. Это не допущения а область применимости функции. Так как компилятор ругается, то это еще один плюс.
2. Только при не грамотном чтении вопроса.
3. Такая функция не имеет смысла.
...
Рейтинг: 0 / 0
нечетные числа
    #33846846
freebeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akh
1. Это не допущения а область применимости функции. Так как компилятор ругается, то это еще один плюс.
2. Только при не грамотном чтении вопроса.
3. Такая функция не имеет смысла.
Так все-таки 4.0 - четное число?
А 4294967298 ?
А 4294967298.0?
...
Рейтинг: 0 / 0
нечетные числа
    #33847011
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
freebeer
Так все-таки 4.0 - четное число?
А 4294967298 ?
А 4294967298.0?

А ядро ОС красное или зеленое? :)
...
Рейтинг: 0 / 0
нечетные числа
    #33847347
Sandro_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
freebeer
Sandro_K
Ты гонишь, если у тебя в типе double хранится целое число с точки зрения теории чисел, то когда будешь четность определять преобразуй его явно в целое

А зачем? Разумнее сделать решение для типа double (нпр используя функцию fmod)

Нет, сделать решение типа double не разумнее, потому что double это тип с плавающей точкой, т. е. его точность может быть меняться, целые типы имеют фиксированную точность
Код: plaintext
1.
2.
3.
4.
5.
    double a= 1e+ 16 ;
    double b=  1 ;
    cout << a+b << " " << fmod(a+b,  2 ) << endl;
    cout << a  << " " << fmod(a,  2 )    << endl; 
    //оба числа получились четными :)  
Можно ли сказать четное число или нет если его точность может так сильно меняться?

freebeer
Так все-таки 4.0 - четное число?
А 4294967298 ?
А 4294967298.0?

Если они их округлить до целых то четные :)
Если вам нужна более высокая точность чем та которую предоставляет тип int то используйте 64 битные целые типы (в gcc например long long)
Код: plaintext
1.
2.
3.
4.
5.
long long a = 4294967298LL;
odd(a);

double b =   4294967298 . 0 ;
odd((long long)b);
...
Рейтинг: 0 / 0
нечетные числа
    #33854238
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhА ядро ОС красное или зеленое? :)у винды синее, я видел.
...
Рейтинг: 0 / 0
нечетные числа
    #33855271
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoу винды синее, я видел.
Это были яйца, а не ядро :)
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
нечетные числа
    #33858459
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас БарабасЭто были яйца....

причём в профиль !
...
Рейтинг: 0 / 0
нечетные числа
    #33858932
ZeusTheTrueGod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закройте же этот топик :)
...
Рейтинг: 0 / 0
нечетные числа
    #33859314
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZeusTheTrueGodЗакройте же этот топик :)
Это ты кому ????
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
нечетные числа
    #33859738
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, все.... начинается
...
Рейтинг: 0 / 0
нечетные числа
    #33873752
bel_nikita
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
bool odd(int value) { return ( value &  1  );}
...
Рейтинг: 0 / 0
нечетные числа
    #33873788
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bel_nikitabool odd(int value) { return ( value & 1 );}
А мужику-то и не знают (С)
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
нечетные числа
    #33873805
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bel_nikita
Код: plaintext
bool odd(int value) { return ( value &  1  );}


Сложная комбинация этого и этого. :)
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / нечетные числа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]