Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.23;
Скачать: CL | DM;

Вниз

целое ли число   Найти похожие ветки 

 
Evereve   (2005-09-27 18:21) [0]

Алгоритмический вопрос: как можно с помощью только операций +,-,*,/ узнать, является число целым или дробным?
Заранее спасибо


 
XGarik ©   (2005-09-27 19:16) [1]

Алгоритма не знаю (есть ли он такой вообще?). Но направлю к свету. Мы имеем одно число. Над этим числом мы производим различные действия и в итоге получаем какую-нибудь константу, которая и будет ключем к раскрытию загадки!

Допустим:
{танцы с бубнами и числом}=0.1 - целое
{танцы с бубнами и числом}<>0.1 - дробное

А вообще для чего это? Задание по матану? Или еще что?


 
Anatoly Podgoretsky ©   (2005-09-27 19:36) [2]

Никак - для того чтобы узнать нужны операторый отношений.


 
IceBeerg ©   (2005-09-28 13:36) [3]

var
int1:Real;
begin
int1:=12.0;
If int1<>Trunc(Int1) Then Application.MessageBox("Число не целое","Msg",0)
                     Else Application.MessageBox("Число целое","Msg",0);
end;


 
MBo ©   (2005-09-28 15:34) [4]

Для того, чтобы это узнать, нужно посмотреть, как объявлена переменная в разделе Var.


 
Grief ©   (2005-09-28 16:23) [5]

Используя тока плюс, минус, умножить и делить - низзя, ибо всем эти операторам глубоко поровну целые или дробные операнды. Можно только обойтись без знака равенства. А вот Int() или Trunc() или еще что-нить подобное обязательно должно быть.


 
vrem   (2005-09-28 18:04) [6]

Интерактивную программу написать, что бы пользователю вопросы задавала. Раз сама не решает - не будет задаваться.


 
GuAV ©   (2005-09-28 19:21) [7]

Grief ©   (28.09.05 16:23) [5]

Не обязательно, можно обойтись сложением и сравнением.


 
GuAV ©   (2005-09-28 19:45) [8]

Можно и без сравнения :-)

function IsFrac(Value: Single): LongBool;
var
 _Value: LonwWord absolute Value;
 _Result: LongWord absolute Result;
begin
 // тут можно обойтись and or not xor shl shr :=, если знать формат single, мне в лом искать ;)
end;


 
vrem   (2005-09-28 19:52) [9]

[8] GuAV ©   (28.09.05 19:45)
результат = 1 бит как я понял, в определённом месте, перечисленными операциями можно получить этот бит, но в произвольном месте. как сдвинуть в нужное место?
допустим больше нуля для байта -
байт and 255 - какой то один или все 8 битов проявятся, но в любом из 8-ми мест, а нужно - в 0-вом месте, что бы в результат скопировать. и как? :)


 
begin...end ©   (2005-09-28 19:57) [10]

> vrem   (28.09.05 19:52) [9]
> как сдвинуть в нужное место?

Зачем? Для LongBool любое ненулевое значение может рассматриваться как "истинное".


 
vrem   (2005-09-28 20:00) [11]

да, что то я.. ещё способ придумал - результат:=результат or (все биты по очереди). Надо же - можно свой IF написать :)


 
umbra ©   (2005-09-28 20:11) [12]

Главное - оптимизировать, т.е. операций поменьше. Если оптимизировать 8, то
получится

function IsFrac(Value: Single): LongBool;
 Result := 1;
end;



Страницы: 1 вся ветка

Текущий архив: 2005.10.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
14-1127994870
ZeroDivide
2005-09-29 15:54
2005.10.23
Народ, кто программировал цифровушки от Olympus?


4-1124289081
NikNet
2005-08-17 18:31
2005.10.23
Как правельно передать Handle иконки другому Handle иконки?


3-1126548318
Galiaf
2005-09-12 22:05
2005.10.23
Команды для работы с базами


3-1126596950
Sigetta
2005-09-13 11:35
2005.10.23
Master-Detail и запрос с параметрами


14-1128316485
Ega23
2005-10-03 09:14
2005.10.23
С днем рождения! 3 октября