Очередная задачка

Активист

Активист
Команда форума
Wicked
4/2 = 2
(int)2 != 0
Итог - a>b

Что не так?

-~{}~ 20.12.08 19:54:

Да, это основано на том, что придел x / y, при y > x стремиться к нулю.
 

fixxxer

К.О.
Партнер клуба
если предположить что отрицательных нет, диапазон решений сильно расширяется.

например ($a % $b) == $a :) ну только для целых, да.
 

Армян

Новичок
Мое тоже только с целыми будет работать, я както про вещ-ые и не подумал :))
 

Nicholas

Новичок
Вот одно из рещений.
Числа могут быть любыми:

PHP:
/**
 * Вычисляем квадратный корень из числа
 */
function my_sqrt($N)
{
  $x1 = 1;
  $x2 = 0;

  for ($i = 0; $i != 10000; ++$i) 
  {
    $x2 = ($x1+$N/$x1)/2;
    $x1 = $x2;
  }

  return $x2;
}

/**
 * Сравниваем 2 числа
 */
function compare($a, $b)
{
  $c = $a - $b;
  
  if ($c == 0)
  {
    return "$a == $b";
  }
  
  $c2 = $c * $c; // $с2 - заведомо неотрицательное число
  
  // Если корень из квадрата числа не равен исходному числу, значит число отрицаткльное
  if ($c == my_sqrt($c2))
  {
    return "$a > $b";
  }
  else 
  {
    return "$a < $b";
  }
}
 

Vidmich

Новичок
function less($a, $b)
{
return -1 == ($a - $b) >> (PHP_INT_SIZE * 8 - 1);
}

или

function less($a, $b)
{
return 0 != (($a - $b) & (PHP_INT_MAX + 1));
}
 
Сверху