За последние 24 часа нас посетили 45567 программистов и 1813 роботов. Сейчас ищут 914 программистов ...

Генерация и сортировка массива. Как исправить программу?

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

  1. DimaP

    DimaP Новичок

    С нами с:
    12 июн 2016
    Сообщения:
    21
    Симпатии:
    1
    PHP:
    1. <?php
    2.  
    3.  
    4. $lenght = 13; //длина текста в элементах
    5. $count = 5; //количество элементов
    6.  
    7. function generate($length){
    8. $letters = 'abdefhiknrstyzABDEFGHKNQRSTYZ';
    9. $strlen_letters = strlen($letters);//длина строки
    10. $name = '';
    11. for ($i = 0; $i < $length; $i++) {
    12. $name .= substr($letters, rand(1, $strlen_letters), $length);
    13. }
    14.  
    15. return $name;
    16.  
    17. }
    18.  
    19. $array = array();
    20. /*$count = 13;*/
    21. $length = 5;
    22. for ($i = 0; $i < $length; $i++) {
    23. $array[$i] = generate($length);
    24. }
    25.  
    26. echo 'Начальный массив:';
    27. print_r ($array);
    28.  
    29. echo 'Массив, сортированый в алфавитном порядке:';
    30. sort($array);
    31. print_r($array);
    32.  
    33. echo 'Массив без первых букв:';
    34. array_map( function($str){
    35. return (string) substr($str,1); } ,$array);
    36. print_r($array);
    37.  
    38. echo 'Массив, сортированый в алфавитном порядке 2:';
    39. sort($array);
    40. print_r($array);
    41.  
    42. ?>
    Вот само задание:
    Дано
    $lenght - длина текста в элементах (13)
    $count - количество элементов (5)

    Написать код, который будет генерировать случайный массив состоящий их $count элементов которые содержат текст заданной длины $lenght
    После генерации полученный массив выводим на экран используя функцию print_r
    Далее сортируем все элементы массива в алфавитном порядке и выводим на экран
    Далее обрезаем первую букву во всех элементах и выводим на экран
    Далее опять сортируем все элементы массива в алфавитном порядке и выводим на экран



    Логика в коде, на мой взгляд, правильная. Какие другие функции можно использовать, в голову не приходит. Помогите плиз исправить программу.

    Оформляй код самостоятельно: кнопка </> - выбрать подходящий язык - копипаст кода - "вставить". Модератор.
     
    #1 DimaP, 18 авг 2016
    Последнее редактирование модератором: 19 авг 2016
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    А зачем другие функции?
     
  3. DimaP

    DimaP Новичок

    С нами с:
    12 июн 2016
    Сообщения:
    21
    Симпатии:
    1
    Затем, что данный вариант программы не работает. А как исправить, я не знаю
     
  4. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Просто внимательно документацию по выбранным функциям почитать.
     
  5. DimaP

    DimaP Новичок

    С нами с:
    12 июн 2016
    Сообщения:
    21
    Симпатии:
    1
    почитал. если бы я сам разобрался, я бы сюда не написал. логично?
     
  6. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    @DimaP, а причём тут раздел "Алгоритмы и решения?" Видишь, даже раздел не угадал.
    --- Добавлено ---
    оформления нет, читать вырвиглазно.
     
  7. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @DimaP ну значит сначала надо внимательность и соображалку пропатчить, а потом уже браться за программирование.
    array_map работая над массивом собирает другой массив. То есть написанный тобой фрагмент обрезки первых символов - пустая нагрузка на процессор. Надо добавить присвоение обратно в переменную с массивом.
    А вот array_walk умеет работать с массивом по ссылке. Но тогда в колбэке надо будет делать присвоение обработанной строки, и передавать её в - по ссылке в сигнатуре.
    Ну и еще при объявлении массива совсем не обязательно указывать в какой индекс помещать данные. Ты можешь просто делать [] и пых сам добавит значение в хвост.

    Садись, два.
     
  8. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL