Задача №10 - Найти максимальное значение массива

Задачи №10 из этого списка

Условие задачи:

Задайте случайным образом массив из N элементов (целых чисел). Найдите максимальное число и напечатайте его

Мое решение:

<?php
function createArray ($m){
    for ($i = 0; $i < $m; $i++){
        $mass[$i] = rand(1, 85);
    }
    return $mass;
}
$arr = createArray(rand(10, 15));
echo '<pre>';
var_dump($arr);

function more($a){
    rsort($a);
    echo $a[0];
}
more($arr);

Key Words for FKN + antitotal forum (CS VSU):

melisa's picture

  1. function more($a){

    Непонятное название, попробуйте назвать функцию по тому, что она делает

  2. Представьте альтернативный вариант решения задачи - без использования функций, через перебор массива.

Функцию и не только... переименовал (уроки не прошли даром), ниже альтернативный вариант решения задачи:

<?php
function createArray ($n){
    for ($i = 0; $i < $n; $i++){
        $arr[$i] = rand(1, 85);
    }
    return $arr;
}
$a = createArray(rand(10, 15));
echo '<pre>';
var_dump($a);

function printMaximumValueArray($a){
    $b = 0;
    for ($i = 0; $i < count ($a); $i++){
        if ($a[$i] >= $b) {
            $b = $a[$i];
            $c = $i;
        }
    }
    echo 'Максимальное значение массива ' . $b . ' его индекс ' . $c;
}
printMaximumValueArray($a);

... возвращаясь к вопросу универсальности и "охвата всех возможных вариантов значений" и возможного "пульса пациента" - данный код будет работать если в массиве есть отрицательные и положительные значения, но если в массиве только отрицательные значение, он работать не будет...

melisa's picture

  1. данный код будет работать если в массиве есть отрицательные и положительные значения, но если в массиве только отрицательные значение, он работать не будет

    Ну и плохо. Вы понимаете по какой причине?
    Потому что вы первый элемент сравниваете с 0. Напрмер, что Вам мешает вместо этого написать так:

    $b = $a[0];
  2. if ($a[$i] >= $b)

    Если значение равно максимальному, нет смысла его заменять. Это лишнее.

<?php
function createArray ($n){
    for ($i = 0; $i < $n; $i++){
        $arr[$i] = rand(-85, 85);
    }
    return $arr;
}
function printMaximumValueArray($a){
    $b = $a[0];
    for ($i = 0; $i < count ($a); $i++){
        if ($a[$i] >= $b) {
            $b = $a[$i];
            $c = $i;
        }
    }
    echo 'Максимальное значение массива ' . $b . ' его индекс ' . $c;
}
$a = createArray(rand(10, 15));
echo '<pre>';
var_dump($a);
printMaximumValueArray($a);

P.S. программирование с одной стороны меня до безумия увлекает, а с другой стороны пугает... достаточно внести совершенно не большие изменения в код... и он уже работает совершенно по другому!

melisa's picture

вы проигнорировали второе замечание

<?php
function createArray ($n){
    for ($i = 0; $i < $n; $i++){
        $arr[$i] = rand(-85, 85);
    }
    return $arr;
}
function printMaximumValueArray($a){
    $b = $a[0];
    for ($i = 0; $i < count ($a); $i++){
        if ($a[$i] > $b) {
            $b = $a[$i];
            $c = $i;
        }
    }
    echo 'Максимальное значение массива ' . $b . ' его индекс ' . $c;
}
$a = createArray(rand(10, 15));
echo '<pre>';
var_dump($a);
printMaximumValueArray($a);