За последние 24 часа нас посетили 17523 программиста и 1650 роботов. Сейчас ищет 961 программист ...

Выбрать из массива 5 самых крупных значения

Тема в разделе "PHP для новичков", создана пользователем Igorby, 10 янв 2016.

  1. Igorby

    Igorby Новичок

    С нами с:
    30 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    Массив состоит из 10 значений - цифр (10, 12, 14, 1, 5, 21, 91, 97, 50, 210)
    Нужно вывести пять самых больших.
    Должно получиться - 97, 91, 210, 50, 21
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    И что? Напишите по-русски алгоритм для начала, как будете делать.
     
  3. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну показывай какие идеи
     
  4. Igorby

    Igorby Новичок

    С нами с:
    30 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    Вот пример выбора и вывода среднего числа.

    Код (PHP):
    1. <?php
    2. $massiv = array (10, 12, 14, 1, 5, 21, 91, 97, 50, 210);
    3.  
    4. function SredArifChislo ($array) {
    5.  
    6.     $SummaChisel = 0;
    7.     for ($i=0; $i<count($array); $i++) {
    8.     $SummaChisel = $SummaChisel + $array[$i];
    9.     }
    10.     $SredArifChislo = $SummaChisel / count($array);
    11.         return $SredArifChislo;
    12.     }
    13.     echo SredArifChislo ($massiv);
    14. ?>
    Как найти пять самых больших и маленьких не врубаюсь.
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    не надо php, к тому же другой задачи, начните с алгоритма на русском языке или с блоксхемы
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Отсортируй и бери нужные числа.
     
  7. Igorby

    Igorby Новичок

    С нами с:
    30 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    Сложно представляю как это делается. Мне бы самому алгоритм понять. Хотя бы знать куда копать.

    1. Есть 5 чисел (2, 3, 7, 8, 10). Нужно выбрать два самых крупных.
    2. Представляю, что наверняка потребуется массив.
    3. Слышал о том, что в php, есть сортирующие функции (arsort, asort, ksort) для работы с массивами. Но не могу врубиться, что с ними делать. И вообще в правильном ли я направлении...
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а в мануале твои догадки никто не мог опровергнуть или подтвердить?

    Добавлено спустя 3 минуты 4 секунды:
    Код (PHP):
    1. array(10) {
    2.   [0]=>
    3.   int(10)
    4.   [1]=>
    5.   int(12)
    6.   [2]=>
    7.   int(14)
    8.   [3]=>
    9.   int(1)
    10.   [4]=>
    11.   int(5)
    12.   [5]=>
    13.   int(21)
    14.   [6]=>
    15.   int(91)
    16.   [7]=>
    17.   int(97)
    18.   [8]=>
    19.   int(50)
    20.   [9]=>
    21.   int(210)
    22. } 
    Код (PHP):
    1. array(10) {
    2.   [9]=>
    3.   int(210)
    4.   [7]=>
    5.   int(97)
    6.   [6]=>
    7.   int(91)
    8.   [8]=>
    9.   int(50)
    10.   [5]=>
    11.   int(21)
    12.   [2]=>
    13.   int(14)
    14.   [1]=>
    15.   int(12)
    16.   [0]=>
    17.   int(10)
    18.   [4]=>
    19.   int(5)
    20.   [3]=>
    21.   int(1)
    22. } 
    Код (PHP):
    1. array(5) {
    2.   [9]=>
    3.   int(210)
    4.   [7]=>
    5.   int(97)
    6.   [6]=>
    7.   int(91)
    8.   [8]=>
    9.   int(50)
    10.   [5]=>
    11.   int(21)
    12. } 
    Код (PHP):
    1. array(5) {
    2.   [5]=>
    3.   int(21)
    4.   [6]=>
    5.   int(91)
    6.   [7]=>
    7.   int(97)
    8.   [8]=>
    9.   int(50)
    10.   [9]=>
    11.   int(210)
    12. }
    13.  
    можешь заняться реверс-инжинирингом :D

    Добавлено спустя 1 минуту 17 секунд:
    кстати, а по какому принципу вообще у тебя отсортированы те числа которые самые большие? почему они местами меняются?
     
  9. Igorby

    Igorby Новичок

    С нами с:
    30 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    Они отсортированы мной в произвольно-беспорядочном порядке.

    Спасибо большое за код. Буду разбираться.
     
  10. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    мне только одно интересно, как среднее арифметическое связано с выбором пяти наибольших?

    задачка решается вызовом двух встроенных функций, достаточно подумать минуту что искать, посмотреть в документацию и применить.
     
  11. Igorby

    Igorby Новичок

    С нами с:
    30 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    Вот кстати понял как упорядочить по возрастанию и вывести все числа. Осталось понять как вывести только первые пять:

    Код (PHP):
    1. <?php
    2. $massiv = array (10, 12, 14, 1, 5, 21, 91, 97, 50, 210);
    3.  
    4. $arr = array(10, 12, 14, 1, 5, 21, 91, 97, 50, 210);
    5.    rsort($arr);
    6.    for($i=0; $i < count($arr); $i++)
    7.    {
    8.       echo ($arr[$i] . " ");
    9.    } 
    10. ?>
    Добавлено спустя 4 минуты 44 секунды:
    Это домашнее задание состоит из трех заданий. Первое связано с выводом средне-арифметического значения. Со вторым проблемы. Связи возможно и нет никакой. А возможно и есть. Задачи одного уровня. На одну тему. Потому и подозреваю взаимосвязь.

    rsort() - относится к их числу?

    У меня очень мало опыта в общении с программированием в принципе.

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Igorby ты мануал-то открой. там список функций. у них очень понятные названия. ну если проблемы с английским - описание тем более должно тебе что-то сказать.
     
  13. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    среднее арифметическое тоже в два действия из встроенных функций можно сделать. а можно и без них.

    задача хороша тем, что ученика с разных сторон показывает: способность к алгоритмическому мышлению и умение применять готовое. по разному можно блеснуть :) если человек по алгебре успевал нормально, проблем не должно быть, независимо от знания ЯП.
     
  14. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
  15. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    бывает!
     
  16. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Ну если это учебная задачка, могут быть запрещено использовать встроенные функции сортировки. Если не запрещено - то да, две функции.

    Добавлено спустя 2 минуты 10 секунд:
    Тогда плохая идея начинать с php. Начинать надо с блок-схем
     
  17. Igorby

    Igorby Новичок

    С нами с:
    30 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    То есть в данной задаче можно отсортировать и без встроенной функции rsort()?

    Добавлено спустя 57 секунд:
    Уже начал. Назад дороги не будет.
    А за совет по поводу блок-схем спасибо. Буду заниматься этим параллельно с ПХП
     
  18. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    можно сортировать самому. в курсе информатики дают пару алгоритмов сортировки.
     
  19. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Можно, так как алгоритмы сортировки могут использовать циклы для перебора данных из массива и операции сравнения.
    Обычно встроенные функции rsort и другие работают быстрее, тех что ты сам напишешь используя более простые возможности языка.

    Тебе советовали понять какие есть алгоритмы сортировки, какой лучше всего тебе подойдёт и почитать какие есть функции в PHP для работы с массивами. По первому, надо искать в интернете информацию, по второму, обратиться к документации по PHP https://secure.php.net/manual/ru/ref.array.php
     
  20. Igorby

    Igorby Новичок

    С нами с:
    30 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    Нашел в сети метод сортировки массива "Пузырьком", буду разюираться
     
  21. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    чувак в документации есть такой раздел, все функции для работы с массивами, почитай, найдешь много полезного - http://php.ru/manual/ref.array.html

    в твоем случае тебе надо воспользоваться array_slice
     
  22. Igorby

    Igorby Новичок

    С нами с:
    30 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    Спасибо получилось.
    С использованием двух встроенных функций.
    Код (PHP):
    1. <?php
    2.  
    3. $arr = array(10, 12, 14, 1, 5, 21, 91, 97, 50, 210);
    4.    rsort($arr);
    5.      
    6.   for($i=0; $i < count($arr); $i++)
    7.    {
    8.       $arr = array_slice($arr, 0, 5);
    9.   echo $arr[$i] . "<br />";
    10.    } 
    11. ?>
    Буду спрашивать у учителя.
    Возможно была необходимость их избежать, используя алгоритм сортировки.

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  23. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Igorby, прежде чем писать, надо думать. Зачем
    Код (PHP):
    1. $arr = array_slice($arr, 0, 5);
    2.  
    делать в цикле, вы мне расскажите? (я знаю, что сработало, и знаю почему, но в будущем может и не повезти)
     
  24. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    такой вопрос возник, а ты в курсе что после rsort твой массив уже в отсортированном виде, а если он тебе понадобится в первоначальном виде, что тогда делать будешь?
     
  25. Igorby

    Igorby Новичок

    С нами с:
    30 сен 2015
    Сообщения:
    34
    Симпатии:
    0
    А куда я должен был это ставить?

    Я же говорю, возможно метод неправильный, так как я использовал две готовые встроенные функции.