Учебные задачи PHP. Задача 11
Primary tabs
function numberMinArray($number)
{
for ($i = 0; $i < $number; $i ++) {
$arr[] = rand(1, $number);
}
$numberMin = min($arr);
return $numberMin;
}
$number = 20;
$a = numberMinArray($number);
echo "Mинимальное число = $a.";Без функции
min();
function numberMinInArray($number)
{
for ($i = 0; $i < $number; $i ++) {
$arr[] = rand(1, $number);
}
$numberMin = $arr[0];
foreach ($arr as $v) {
if ($v < $numberMin) {
$numberMin = $v;
}
}
return $numberMin;
}
$number = 20;
$a = numberMinInArray($number);
echo "Mинимальное число = $a.";- Log in to post comments
- 9205 reads
melisa
Tue, 04/23/2019 - 17:18
Permalink
замечания
Если в условии не указано, из какого диапазона должны быть числа, можно использовать функцию rand() без аргументов.
Но это не ошибка, это просто для ознакомления
Laven
Wed, 04/24/2019 - 15:57
Permalink
Модифицировал код задачи
<pre><?php function generateArrayRandom($n) { for ($i = 0; $i < $n; $i ++) { $arrRandom[] = rand(1, 100); } print_r ($arrRandom); // вывод дампа массива для самопроверки return $arrRandom; } function calculatingMinimumValueArray($c) { return min($c); } $n = 3; $genArrRand = generateArrayRandom($n); $calcMinValArr = calculatingMinimumValueArray($genArrRand); echo "Mинимальное число массива = $calcMinValArr."; ?>Laven
Sat, 04/27/2019 - 10:56
Permalink
Исправил код задачи
<pre><?php function generateArrayRandom($n) { for ($i = 0; $i < $n; $i ++) { $arrRandom[] = rand(1, 100); } print_r ($arrRandom); // вывод дампа массива для самопроверки return $arrRandom; } $n = 3; $genArrRand = generateArrayRandom($n); $arrMinNumber = min($genArrRand); echo "Mинимальное число массива = $arrMinNumber."; ?>melisa
Tue, 04/30/2019 - 17:12
Permalink
хорошо, но
хорошо, но покажите корректное решение с 2мя функциями (не стандартной min(), а обеими Вашими)
Laven
Wed, 05/01/2019 - 09:49
Permalink
Модифицировал код задачи
<pre><?php function generateArrayRandom() { $n = 4; // количество элементов в массиве for ($i = 0; $i < $n; $i ++) { $arrRandom[] = rand(1, 100); } print_r ($arrRandom); // вывод дампа массива для самопроверки return $arrRandom; } function calculatingMinimumValueArray($arr) { $arrMin = null; foreach($arr as $v) { if($v < $arrMin or is_null($arrMin)) { $arrMin = $v; } } return $arrMin; } $genArrRand = generateArrayRandom(); $calcMinValArr = calculatingMinimumValueArray($genArrRand); echo "Mинимальное число массива = $calcMinValArr."; ?>vedro-compota
Tue, 05/07/2019 - 15:52
Permalink
решение рабочее
В принципе это рабочий подход - он даже позволяет вам справится с ситуацией, когда на вход будет подан пустой массив (вы возвращаете null что корректно), но если считать, что массив должен быть не пуст, то перед циклом arrMin-у обычно дают значение первого элемента массива.
А где была взят такой подход? сами придумали?
_____________
матфак вгу и остальная классика =)
Laven
Tue, 05/07/2019 - 18:48
Permalink
Прокомментировал подход решения задачи
Да. Но если так прописать, то будет ошибка, что не определена переменная. Чтобы это исключить, только сегодня это понял, нужно сделать обход массива и тогда переменная $arr[0] будет определена. Такой код для восприятия сложнее, хотя и это тоже решение.
Решая задачу, я так и сделал, объявил
и получил ошибку о не объявленной переменной (обхода массива то не было). Возник вопрос, как объявить переменную? Посчитал, что этот вопрос не такой концептуально важный, чтобы головой прошибать бетонную стену, я обратился с вопросом к более опытным товарищам.
Получив ответ, я познакомился с двумя способами решения этого вопроса. Одновременно, для себя узнал хитрый подход решения вопроса объявления переменной через оператор OR.
Первый подход решения задачи. Тоже много, что из этого почерпнул:
function calculatingMinimumValueArray($arr) { // Если в массиве нет элементов if(empty($arr)) return null; $i = 0; foreach($arr as $v) { // Если $i = 0, т.е. это первый элемент - записываем его в любом случае if(!$i or $v < $arrMin) $arrMin = $v; $i++; } return $arrMin; }Второй подход. Его и использовал:
function calculatingMinimumValueArray($arr) { $arrMin = null; foreach($arr as $v) if($v < $arrMin or is_null($arrMin)) $arrMin = $v; return $arrMin; }И были комментарии по моим вопросам:
melisa
Thu, 05/09/2019 - 13:43
Permalink
принято
Интересный пример с or. Не видела раньше)
Задача засчитана.