Задача №14. На вход вашей программе подаётся массив случайных чисел (10 элементов) из диапазона от 1 до 20.
Primary tabs
Задача из этого списка.
Первое решение задачи:
<?php /* На вход вашей программе подаётся массив случайных чисел (10 элементов) из диапазона от 1 до 20. * Задача: вывести на экран все числа, которые не содержатся в массиве * Решите эту задачу двумя способами: Без использования in_array(), c использованием in_array() */ function createRandomArray($num) { //заполняет случайными цифрами for($a = 1; $a <= $num; $a++) { $array[] = rand(1, 20); } return $array; } function createRandomArray2($num) { //заполняет массив от 1 до 20 for($a = 1; $a <= $num; $a++) { $array[] = $a; } return $array; } function deleteNumbersInArray($maxArray, $array) { //Удаляет из одного массива элементы второго массива, таким образом выводит числа, которые не содержатся в массиве foreach ($maxArray as $key => $elem) { foreach ($array as $elem2) { if($elem == $elem2) { unset($maxArray[$key]); } } } return $maxArray; } $array = createRandomArray(10); $maxArray = createRandomArray2(20); $maxArray = deleteNumbersInArray($maxArray, $array); foreach($maxArray as $elem) { echo $elem, '<br>'; } ?>
Второе решение задачи с помощью функции array_diff:
<?php /* На вход вашей программе подаётся массив случайных чисел (10 элементов) из диапазона от 1 до 20. * Задача: вывести на экран все числа, которые не содержатся в массиве * Решите эту задачу двумя способами: Без использования in_array(), c использованием in_array() */ function createRandomArray($num) { //заполняет случайными цифрами for($a = 1; $a <= $num; $a++) { $array[] = rand(1, 20); } return $array; } function createRandomArray2($num) { //заполняет массив от 1 до 20 for($a = 1; $a <= $num; $a++) { $array[] = $a; } return $array; } $array = createRandomArray(10); $array = array_unique($array); //убирает копии $maxArray = createRandomArray2(20); $diffInArrays = array_diff($maxArray, $array); foreach ($diffInArrays as $elem) { echo $elem, '<br>'; } ?>
Третье решение с помощью функции in_array:
<?php /* На вход вашей программе подаётся массив случайных чисел (10 элементов) из диапазона от 1 до 20. * Задача: вывести на экран все числа, которые не содержатся в массиве * Решите эту задачу двумя способами: Без использования in_array(), c использованием in_array() */ function createRandomArray($num) { //заполняет случайными цифрами for($a = 1; $a <= $num; $a++) { $array[] = rand(1, 20); } return $array; } function createRandomArray2($num) { //заполняет массив от 1 до 20 for($a = 1; $a <= $num; $a++) { $array[] = $a; } return $array; } $array = createRandomArray(10); $array = array_unique($array); //убирает копии $maxArray = createRandomArray2(20); foreach ($maxArray as $elem) { if(in_array($elem, $array)) {} else { echo $elem, '<br>'; } } ?>
- Log in to post comments
- 5178 reads
melisa
Thu, 07/12/2018 - 15:16
Permalink
замечания
Никакого второго массива из 20 элементов быть не должно. Вам даны:
Их и нужно сравнивать.
На самом деле эта функция создаёт не случайный, а определённый массив.
А комментарий этот комментирует не функцию (она не заполняет массив от 1 до 20), а строку вызова функции:
Здесь целесообразно использовать в условии отрицание, тогда не придётся писать блок else вовсе?
Замечательно, что Вы используете array_unique(), в данном решении это оправдано и сократит время обработки.
Остальное обсудим, когда исправите логику (см. п. 1)
Sver4ok
Fri, 07/13/2018 - 18:33
Permalink
Уточню чтоб наверняка
То есть из первого массива нужно убрать числа второго массива, если они там будут?
melisa
Fri, 07/13/2018 - 18:33
Permalink
да, верно
да, верно. нужно вывести весь массив случайных чисел, исключая числа, перечисленные во втором массиве.
Sver4ok
Fri, 07/13/2018 - 20:04
Permalink
Переделал
Версия с функцией in_array:
Версия без функции in_array:
melisa
Tue, 07/17/2018 - 17:02
Permalink
принято
принято