Упражнения на PHP: Проверьте, пересекаются ли пересечения двух окружностей или перекрываются
PHP: упражнение 58 с решением
Есть две окружности C1 с радиусом r1, центральной координатой (x1, y1) и C2 с радиусом r2 и центральной координатой (x2, y2)
Напишите программу PHP, чтобы проверить следующее:
«C2 находится в C1», если C2 находится в C1
«C1 находится в C2», если C1 находится в C2
«Окружность С1 и С2 пересекается», если окружность С1 и С2 пересекаются, и и «С1 и С2 не перекрываются», если С1 и С2 не пересекаются.
Ввод: входные числа (действительные числа) разделяются пробелом.
Введите 0 для выхода.
Пример решения: -
PHP-код:
<?php
$n = intval(fgets(STDIN));
for($i = 0; $i < $n; $i++){
fscanf(STDIN, "%lf %lf %lf %lf %lf %lf", $xa, $ya, $ra, $xb, $yb, $rb);
$r = sqrt(($xb - $xa)*($xb - $xa) + ($yb - $ya)*($yb - $ya));
if($r + $ra < $rb){
echo "C1 is in C2\n";
continue;
}
if($r + $rb < $ra){
echo "C2 is in C1.\n";
continue;
}
if($r <= $ra + $rb){
echo "Circumference of C1 and C2 intersect.";
continue;
}
echo "C1 and C2 do not overlap.\n";
}
?>
Пример ввода:
2
0,0 0,0 6,0 0,0 0,0 5,0
0,0 0,0 3,0 0,0 0,0 3,0
Пример вывода:
С2 находится в С1. Окружность С1 и С2 пересекаются.
Блок - схема:
Редактор кода PHP:
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Предыдущий: Напишите программу PHP, чтобы найти максимальную сумму непрерывной подпоследовательности из заданной последовательности чисел a1, a2, a3, ... an. Подпоследовательность одного элемента также является непрерывной подпоследовательностью.
Далее: напишите PHP-программу, которая читает дату (с 2004/1/1 по 2004/12/31) и печатает день даты. 1 января 2004 года - пятница. Обратите внимание, что 2004 год високосный.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования