Даны отрезки a,b,c и d. Для каждой тройки этих отрезков, из которых можно построить треугольник, напечатать площадь данного треугольника. Определить функцию Plo(x,y,z), печатающую площадь треугольника со сторонами x,y и z, если такой треугольник существует.(заплачу)
Примерно так (не судите строго, написал по-быстрому) PHP: <?php class Triangle { public function perebor($data = []) { $arr = []; $result = []; foreach($data as $key=>$value) { foreach($data as $key_2=>$value_2) { if($key!=$key_2) { foreach ($data as $key_3=>$value_3) { if($key_3 != $key_2 && $key_3 != $key_1) { $temparr = [$value,$value_2,$value_3]; arsort($temparr); $arr[] = $temparr; } } } } } $arr = $this->delDuplicate($arr); foreach ($arr as $key=>$value) { $res = $this-> plo($value[0],$value[1],$value[2]); $triangle = implode('/',$value); $result .= (!empty($res)) ? 'Площадь треугольника '.$triangle.' равна '.$res.'<br>' : 'Треугольника '.$triangle.' не существует!<br>'; } return $result; } public function delDuplicate($array) { $arr = []; foreach ($array as $value) { $arr[] = implode('',$value); } $arr = array_unique($arr); $keys = array_keys($arr); foreach ($array as $key=>$value) { if(in_array($key,$keys)) { unset($array[$key]); } } return $array; } public function plo($a,$b,$c) { $p = ($a + $b + $c)/2; $s = sqrt($p * ($p - $a) * ($p - $b) * ($p - $c)); return ($s > 0) ? $s : false; } } $a = new Triangle; $arr = $a->perebor([10,20,30,40,50]); echo $arr;
Вот, дома немного подправил. Вроде работает. PHP: <?php class Triangle { public function getSides($sides = []) { $tempArr = []; if (count($sides) > 2) { foreach ($sides as $key_1 => $value_1) { foreach ($sides as $key_2 => $value_2) { if ($key_1 != $key_2) { foreach ($sides as $key_3=>$value_3) { if ($key_3 != $key_2 && $key_3 != $key_1 && is_numeric($value_1)&& is_numeric($value_2)&& is_numeric($value_1)) { $tempArr[] = [$value_1,$value_2,$value_3]; } } } } } } else { return ['Вы должны ввести минимум 3 стороны!']; } if (count($tempArr) > 0) { return $this->genTriangle($this->delDuplicate($tempArr)); } else { return FALSE; } } public function delDuplicate ($array = []) { $tempArr = []; if (count($array) > 0) { foreach ($array as $key => $value) { arsort($value); $tempArr[$key] .= implode('/',$value); } $tempArr = array_unique($tempArr); $keys = array_keys($tempArr); foreach ($array as $key=>$value) { if (!in_array($key,$keys)) { unset($array[$key]); } } $result = $array; } return $result ?? false; } public function genTriangle($array = []) { $result = []; if(!empty($array)) { foreach ($array as $key => $value) { $a = $value[0]; $b = $value[1]; $c = $value[2]; $name = "<strong>$a/$b/$c</strong>"; $p = ($a + $b + $c)/2; $cc = ($p * ($p - $a) * ($p - $b) * ($p - $c)); $s = sqrt($p * ($p - $a) * ($p - $b) * ($p - $c)); $result[] .= (empty($s) || is_nan($s)) ? "Треугольник $name не существует!" : "Площадь треугольника $name равна <strong>$s</strong>"; } } else { $result[] .= 'Ничего не найдено!'; } return $result; } } ?> <DOCTYPE html> <html> <head> <title>Получи свой треугольник</title> <style> .wrapper { width: 500px; padding: 15px; background-color: #cccfff; margin: 0 auto; } h1 { font-size: 23px; text-align: center; } label { display: block; padding: 5px; } .input-text { padding: 10px; width: 100%; margin: 10px auto; } .input-submit { display: block; padding: 15px; min-width: 100%; margin: 25px auto; cursor: pointer; } </style> </head> <body> <div class="wrapper"> <h1>Узнай площадь треугольника!</h1> <form method="POST"> <label>Введите стороны треугольника через запятую</label> <input class="input-text" type="text" name="sides" placeholder="30,23,44,55..."> <input class="input-submit" type="submit" name="submit" value="Рассчитать"> </form> <?php if($_POST['sides']) { $triangle = new Triangle; $result = $triangle->getSides(explode(',',$_POST['sides'])); if(!empty($result)) { echo '<ul>'; foreach($result as $item) { echo "<li>$item</li>"; } echo '</ul>'; } } ?> </div> </body> </html>
@Sergey_Tsarev в строке 71. Там несколько пробельных символов. Вот человек думает а не убрать ли их. Чего файл раздувают...