Задача №10.
Primary tabs
Задайте случайным образом массив из N элементов (целых чисел). Найдите максимальное число и напечатайте его.
Задача находится здесь.
<?php
function rand_array($chislo)
{
for($i = 0; $i < $chislo; $i++) {
$mas[$i] = rand(120, 10);
}
return $mas;
}
function max_number_from_array($mas)
{
$max = $mas[0];//запоминаем 1ый элемент массива.
for($i = 1; $i < count($mas); $i++) {
//сравниваем 1ый элемент с текущим.
if($mas[$i] > $max) {
$max = $mas[$i];//запоминаем новый для максимального, если текущий больше.
}
}
echo "Максимальный элемент массива = [", $max, "]";
}
$arr = [];
$n = 10;
max_number_from_array(rand_array($n));
?>
- Log in to post comments
- 4708 reads
math2
Sun, 08/06/2017 - 21:38
Permalink
Нормально. Работает.
Нормально. Работает.
Но я всё же не советовал бы отрицать цикл foreach, и использовать всегда целочисленные индексы.
Например, скрипт
<?php function rand_array($chislo) { for($i = 0; $i < $chislo; $i++) { $mas[$i] = rand(120, 10); } return $mas; } function max_number_from_array($mas) { $max = $mas[0];//запоминаем 1ый элемент массива. for($i = 1; $i < count($mas); $i++) { //сравниваем 1ый элемент с текущим. if($mas[$i] > $max) { $max = $mas[$i];//запоминаем новый для максимального, если текущий больше. } } echo "Максимальный элемент массива = [", $max, "]\n"; } $arr = [1 => 14, 2 => 15, 3 => 17]; print_r($arr); echo "\n"; max_number_from_array($arr);выдаст
Array ( [1] => 14 [2] => 15 [3] => 17 ) PHP Notice: Undefined offset: 0 in /home/vic/php/task_10.php on line 12 Максимальный элемент массива = [15]Скрипт выполнился с замечанием и выдал неверный результат.
Получается, что функция max_number_from_array работоспособна
для непустых массивов, построенных функцией rand_array,
и неработоспособна для массивов более общего вида, например для
И можно избежать это:
<?php function rand_array($chislo) { for($i = 0; $i < $chislo; $i++) { $mas[$i] = rand(120, 10); } return $mas; } function max_number_from_array($array) { $max = array_shift($array); //запоминаем 1ый элемент массива foreach($array as $value) { if ($value > $max) { //сравниваем 1ый элемент с текущим. $max = $value; //запоминаем текущий элемент в качестве максимального, если он больше. } } echo "Максимальный элемент массива = [", $max, "]\n"; } $arr = [1 => 14, 2 => 15, 3 => 17]; print_r($arr); echo "\n"; max_number_from_array($arr); $n = 10; max_number_from_array(rand_array($n)); ?>Вывод этого скрипта
Array ( [1] => 14 [2] => 15 [3] => 17 ) Максимальный элемент массива = [17] Максимальный элемент массива = [97]sid
Mon, 08/07/2017 - 00:06
Permalink
Спасибо теперь ясно с foreach
Спасибо теперь ясно с foreach.