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)