Массив состоит из 10 значений - цифр (10, 12, 14, 1, 5, 21, 91, 97, 50, 210) Нужно вывести пять самых больших. Должно получиться - 97, 91, 210, 50, 21
Вот пример выбора и вывода среднего числа. Код (PHP): <?php $massiv = array (10, 12, 14, 1, 5, 21, 91, 97, 50, 210); function SredArifChislo ($array) { $SummaChisel = 0; for ($i=0; $i<count($array); $i++) { $SummaChisel = $SummaChisel + $array[$i]; } $SredArifChislo = $SummaChisel / count($array); return $SredArifChislo; } echo SredArifChislo ($massiv); ?> Как найти пять самых больших и маленьких не врубаюсь.
Сложно представляю как это делается. Мне бы самому алгоритм понять. Хотя бы знать куда копать. 1. Есть 5 чисел (2, 3, 7, 8, 10). Нужно выбрать два самых крупных. 2. Представляю, что наверняка потребуется массив. 3. Слышал о том, что в php, есть сортирующие функции (arsort, asort, ksort) для работы с массивами. Но не могу врубиться, что с ними делать. И вообще в правильном ли я направлении...
а в мануале твои догадки никто не мог опровергнуть или подтвердить? Добавлено спустя 3 минуты 4 секунды: Код (PHP): array(10) { [0]=> int(10) [1]=> int(12) [2]=> int(14) [3]=> int(1) [4]=> int(5) [5]=> int(21) [6]=> int(91) [7]=> int(97) [8]=> int(50) [9]=> int(210) } Код (PHP): array(10) { [9]=> int(210) [7]=> int(97) [6]=> int(91) [8]=> int(50) [5]=> int(21) [2]=> int(14) [1]=> int(12) [0]=> int(10) [4]=> int(5) [3]=> int(1) } Код (PHP): array(5) { [9]=> int(210) [7]=> int(97) [6]=> int(91) [8]=> int(50) [5]=> int(21) } Код (PHP): array(5) { [5]=> int(21) [6]=> int(91) [7]=> int(97) [8]=> int(50) [9]=> int(210) } можешь заняться реверс-инжинирингом Добавлено спустя 1 минуту 17 секунд: кстати, а по какому принципу вообще у тебя отсортированы те числа которые самые большие? почему они местами меняются?
Они отсортированы мной в произвольно-беспорядочном порядке. Спасибо большое за код. Буду разбираться.
мне только одно интересно, как среднее арифметическое связано с выбором пяти наибольших? задачка решается вызовом двух встроенных функций, достаточно подумать минуту что искать, посмотреть в документацию и применить.
Вот кстати понял как упорядочить по возрастанию и вывести все числа. Осталось понять как вывести только первые пять: Код (PHP): <?php $massiv = array (10, 12, 14, 1, 5, 21, 91, 97, 50, 210); $arr = array(10, 12, 14, 1, 5, 21, 91, 97, 50, 210); rsort($arr); for($i=0; $i < count($arr); $i++) { echo ($arr[$i] . " "); } ?> Добавлено спустя 4 минуты 44 секунды: Это домашнее задание состоит из трех заданий. Первое связано с выводом средне-арифметического значения. Со вторым проблемы. Связи возможно и нет никакой. А возможно и есть. Задачи одного уровня. На одну тему. Потому и подозреваю взаимосвязь. rsort() - относится к их числу? У меня очень мало опыта в общении с программированием в принципе. Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
Igorby ты мануал-то открой. там список функций. у них очень понятные названия. ну если проблемы с английским - описание тем более должно тебе что-то сказать.
среднее арифметическое тоже в два действия из встроенных функций можно сделать. а можно и без них. задача хороша тем, что ученика с разных сторон показывает: способность к алгоритмическому мышлению и умение применять готовое. по разному можно блеснуть если человек по алгебре успевал нормально, проблем не должно быть, независимо от знания ЯП.
Ну если это учебная задачка, могут быть запрещено использовать встроенные функции сортировки. Если не запрещено - то да, две функции. Добавлено спустя 2 минуты 10 секунд: Тогда плохая идея начинать с php. Начинать надо с блок-схем
То есть в данной задаче можно отсортировать и без встроенной функции rsort()? Добавлено спустя 57 секунд: Уже начал. Назад дороги не будет. А за совет по поводу блок-схем спасибо. Буду заниматься этим параллельно с ПХП
Можно, так как алгоритмы сортировки могут использовать циклы для перебора данных из массива и операции сравнения. Обычно встроенные функции rsort и другие работают быстрее, тех что ты сам напишешь используя более простые возможности языка. Тебе советовали понять какие есть алгоритмы сортировки, какой лучше всего тебе подойдёт и почитать какие есть функции в PHP для работы с массивами. По первому, надо искать в интернете информацию, по второму, обратиться к документации по PHP https://secure.php.net/manual/ru/ref.array.php
чувак в документации есть такой раздел, все функции для работы с массивами, почитай, найдешь много полезного - http://php.ru/manual/ref.array.html в твоем случае тебе надо воспользоваться array_slice
Спасибо получилось. С использованием двух встроенных функций. Код (PHP): <?php $arr = array(10, 12, 14, 1, 5, 21, 91, 97, 50, 210); rsort($arr); for($i=0; $i < count($arr); $i++) { $arr = array_slice($arr, 0, 5); echo $arr[$i] . "<br />"; } ?> Буду спрашивать у учителя. Возможно была необходимость их избежать, используя алгоритм сортировки. Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
Igorby, прежде чем писать, надо думать. Зачем Код (PHP): $arr = array_slice($arr, 0, 5); делать в цикле, вы мне расскажите? (я знаю, что сработало, и знаю почему, но в будущем может и не повезти)
такой вопрос возник, а ты в курсе что после rsort твой массив уже в отсортированном виде, а если он тебе понадобится в первоначальном виде, что тогда делать будешь?
А куда я должен был это ставить? Я же говорю, возможно метод неправильный, так как я использовал две готовые встроенные функции.