Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.065 c
1-1127985556
BaxTMaH
2005-09-29 13:19
2005.10.23
Как посчитать количество столбцов в DBGride?


4-1124470748
NikNet
2005-08-19 20:59
2005.10.23
Как сделать Explorer для Реестра


14-1128105439
Gamer
2005-09-30 22:37
2005.10.23
Проблеммы с Canon iP1500


9-1118294977
.cpp
2005-06-09 09:29
2005.10.23
Множестово слоёв изображений (всем кто делает карты )


14-1128334632
ocean
2005-10-03 14:17
2005.10.23
Win98 лат. на ноутбуке HP после Shutdown не выключает питание





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский