Задача №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
- 5988 reads
melisa
Thu, 07/12/2018 - 15:16
Permalink
замечания
Никакого второго массива из 20 элементов быть не должно. Вам даны:
Их и нужно сравнивать.
function createRandomArray2($num) { //заполняет массив от 1 до 20На самом деле эта функция создаёт не случайный, а определённый массив.
А комментарий этот комментирует не функцию (она не заполняет массив от 1 до 20), а строку вызова функции:
if(in_array($elem, $array)) {} else { echo $elem, '<br>'; }Здесь целесообразно использовать в условии отрицание, тогда не придётся писать блок else вовсе?
if(!in_array($elem, $array)) { echo $elem, '<br>'; }Замечательно, что Вы используете 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:
<?php /* На вход вашей программе подаётся массив случайных чисел (10 элементов) из диапазона от 1 до 20. * Задача: вывести на экран все числа, которые не содержатся в массиве * Решите эту задачу двумя способами: Без использования in_array(), c использованием in_array() */ function createRandomArray($num) { //заполняет случайными цифрами $array = []; for ($a = 1; $a <= $num; $a++) { $array[] = rand(1, 20); } return $array; } function comparingArrays($arrayUniq, $b) { foreach ($arrayUniq as $elem) { if (!in_array($elem, $b)) { echo $elem, "<br>"; } } } $b = [12, 5, 17, 6, 4]; $randomArray = createRandomArray(10); $arrayUniq = array_unique($randomArray); //убирает повторы из массива comparingArrays($arrayUniq, $b);Версия без функции in_array:
<?php /* На вход вашей программе подаётся массив случайных чисел (10 элементов) из диапазона от 1 до 20. * Задача: вывести на экран все числа, которые не содержатся в массиве * Решите эту задачу двумя способами: Без использования in_array(), c использованием in_array() */ function createRandomArray($num) { //заполняет случайными цифрами $array = []; for ($a = 1; $a <= $num; $a++) { $array[] = rand(1, 20); } return $array; } function comparingArrays($arrayUniq, $b) { foreach ($arrayUniq as $key => $elem1) { foreach ($b as $elem2) { if ($elem1 == $elem2) { unset($arrayUniq[$key]); //убирает элемент из первого массива, если он есть во втором } } } return $arrayUniq; } $b = [12, 5, 17, 6, 4]; $randomArray = createRandomArray(10); $arrayUniq = array_unique($randomArray); //убирает повторы из массива $finalArray = comparingArrays($arrayUniq, $b); foreach($finalArray as $elem) { echo $elem, "<br>"; }melisa
Tue, 07/17/2018 - 17:02
Permalink
принято
принято