Re: наибольший нечётный множитель
- From
- Andrew Nikitin ()
- To
- Rustam Ramazanov
- Date
- 2002-10-29T02:18:12Z
- Area
- RU.ALGORITHMS
From: "Andrew Nikitin" <nsg21@fuse.net>
"Rustam Ramazanov" <ramazanoff@univer.kharkov.ua> wrote in message
news:apjlm2$346$1@host.talk.ru...
> Приветствую!
>
> AN> имеется целая переменная (скажем x) и у неё есть
> AN> некоторое (для простоты
> AN> положителное) значение. Надо написать выражение
> AN> значением которого является
> AN> наибольший нечётный делитель числа x.
> AN> /* greatest odd divisor */
> AN> int god(int x)
> AN> {
> if (x&0x01==0) god(x >> 1)
> else return x;
> AN> }
> Такой вариант подходит?
Нет, не подходит. Речь шла о выражении, а здесь имеется оператор if.
В принципе, в данном решении это можно поправить заменив if на ?:,
но я имел ввиду что надо написать C выражение -- ни ifов, ни whilов, ничего
что не может встретиться в операторе присваивания после знака "=" -- так
чтобы в результатом этого выражения стал наибольший нечётный делитель числа,
хранящегося в переменной x типа int. При этом о разрядности int ничего
неизвестно (иначе можно просто перебрать все возможные значения).
> AN> заменить точки на ascii символы чтобы функция
> AN> возвращала то что нужно.
> AN> (разрядность int неизвестна).
> Не совсем понятно, что здесь имеется ввиду. Нужна более точная
> формулировка задачи.
Хорошо. Вот точная формулировка:
В определении
/* greatest odd divisor */
int god(int x)
{
return ........;
}
заменить каждый стимвол с кодом 0x2e ('.') на некоторый другой ascii чимвол
так чтобы в результате получилась функция, возвращающая наибольший нечётный
делитель аргумента.
--
nsg
--- ifmail v.2.15dev5
* Origin: Posted via Supernews, http://www.supernews.com (2:5020/400)