| |
|
|
| | Всем доброго времени суток.
Задача: есть заданные значения величин в градусах( с минутами) например
+6°23' - +6°56' . Надо в этом промежутке получить random- значение и сравнить его с третьим заданным значением ( например +6°43') , либо как всю эту билиберду перевести в радианы, сравнить и обратно?
Вывод программы обязательно должен быть в форме градусов с минутами. ( т.е. 6,43 -не допускается.) | |
| |
|
|
| |
|
|
| |
для: Dionisy
(16.04.2007 в 15:46)
| | | эм... а если перед выводом изменить тип в стринг и заменить точку на градус, а в конце добавить кавычку? | |
| |
|
|
| |
|
|
| |
для: Dionisy
(16.04.2007 в 15:46)
| | | можно попробовать оперировать числами с плавающей запятой, а затем, при помощи регулярных выражений, переводить результат в градусы и минуты... | |
| |
|
|
| |
|
|
| |
для: kzone
(16.04.2007 в 16:08)
| | | регулярки-то здесь каким боком? | |
| |
|
|
| |
|
|
| |
для: Dionisy
(16.04.2007 в 15:46)
| | | Работайте со значениями в минутах. Перед выводом преобразуйте в градусы. | |
| |
|
|
| |
|
|
| |
для: Trianon
(16.04.2007 в 16:11)
| | | ЭВРИКА!!!! | |
| |
|
|
| |
|
|
| |
для: Dionisy
(16.04.2007 в 15:46)
| | |
<?php
function random_degree($min, $max)
{
if(!preg_match("/(\-|\+)?(\d+)°(\d+)'/", $min, $min_matches)) return false;
if(!preg_match("/(\-|\+)?(\d+)°(\d+)'/", $max, $max_matches)) return false;
$min_minutes = $min_matches[2] * 60 + $min_matches[3];
$max_minutes = $max_matches[2] * 60 + $max_matches[3];
if(isset($min_matches[1]) && $min_matches[1] == "-") $min_minutes = 0 - $min_minutes;
if(isset($max_matches[1]) && $max_matches[1] == "-") $max_minutes = 0 - $max_minutes;
if($min_minutes > $max_minutes) return false;
$rnd = rand($min_minutes, $max_minutes);
return ($rnd > 0 ? "+" : "-") .(($rnd/60) % 60) . "°" . abs(($rnd % 60)) . "'";
}
$rnd = random_degree("+6°23'", "+6°56'");
echo($rnd);
var_dump($rnd === "+6°43'");
?>
|
| |
| |
|
|
| |
|
|
| |
для: Unkind
(16.04.2007 в 16:22)
| | | огромное спасибо всем, кто напрягал мозг и помог выйти из тупика!! | |
| |
|
|