Конференция "Начинающим" » Перевести с C на Delphi
 
  • dmk © (28.09.17 23:45) [0]
    Подскажите кто знает, как перевести такую конструкцию на Delphi?
    float p = (fmod(s * M, 1.0) > 0.5) ^ (fmod(t * M, 1.0) < 0.5);

  • kilkennycat © (29.09.17 00:23) [1]
    это бред. но если он нужен, то fmod вернет остаток от деления, а ^ равен xor
  • dmk © (29.09.17 00:45) [2]
    Эта функция рисует черно-белый паттерн типа шахматной доски.
    fmod мне понятен. Мне непонятно, как C интерпретирует результат от fmod как логическое сравнение или реально делает побитовый ИЛИ на вещественных числах. Я просто проверить не могу. Аналог в Delphi я сделал XorFloat, но получается ерунда. Мне кажется он вибирает одно из двух выражени й в зависимости от условий < 0.5, > 0.5, только вот как непонятно.
  • kilkennycat © (29.09.17 01:10) [3]

    >  как C интерпретирует результат от fmod как логическое сравнение

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

    >  или реально делает побитовый ИЛИ на вещественных числах

    тут нет этого. тут побитовый исключающий или над bool-результатами сравнения
  • kilkennycat © (29.09.17 01:13) [4]
    могу лишь посоветовать при использовании литературы и прочих источников следовать духу объясненного там алгоритма, а не букве указанного там кода.
  • kilkennycat © (29.09.17 01:17) [5]
    но вообще, если в дальнейшем p используется для арифметических действий, то в Си это код вполне жизнеспособен, значения p будут либо 0.0 либо 1.0
  • dmk © (29.09.17 01:26) [6]
    Понял уже. На Delphi так выглядит:
    f := Byte(fmod(s * 10.0, 1.0) > 0.5) xor Byte(fmod(t * 10.0, 1.0) < 0.5);
 
Конференция "Начинающим" » Перевести с C на Delphi
Есть новые Нет новых   [118609   +48][b:0][p:0.001]