Задача №14 - Вывести на экран все числа, которые не содержатся в массиве
Primary tabs
Задачи из этого списка
Решение задачи с использованием in_array()
<?php
/*На вход вашей программе подаётся массив случайных чисел (10 элементов) из диапазона от 1 до 20.
Задача: вывести на экран все числа, которые не содержатся в массиве
$b = [12, 5, 17, 6, 4] */
// Объявление функции создания массива и заполнения его случайными числами
function сreateArray($N)
{
for ( $i = 0; $i < $N; $i++ ) {
$source[] = rand( 1, 20 );
}
return $source;
}
// Объявление функции фильтрации массива случайных чисел
function filterateArray($source, $forbidden)
{
for ( $i = 0; $i < count($source); $i++ ) {
if (in_array($source[$i], $forbidden)) {
return NULL;
} else {
echo $source[$i]." ";
}
}
}
$restrictedNumbers = [12, 5, 17, 6, 4]; // Массив чисел, которые не должны выводиться на экран
$sourceArray = сreateArray(10); // Вызов функции создания массива случайных чисел
filterateArray($sourceArray, $restrictedNumbers); // Вызов функции вывода на экран чисел, которые не содержатся в массиве
?>
- Log in to post comments
- 12862 reads
melisa
Thu, 10/04/2018 - 14:41
Permalink
замечания
$source - неудачное название. Внутри области видимости функции createArray() нет ограничивающего массива вообще. Внутри функции существует только 1 массив, и непонятно, почему он называется "исходный".
Pavel1989
Fri, 10/05/2018 - 18:25
Permalink
Доработал
Решение с использованием функции in_array()
<?php /*На вход вашей программе подаётся массив случайных чисел (10 элементов) из диапазона от 1 до 20. Задача: вывести на экран все числа, которые не содержатся в массиве $b = [12, 5, 17, 6, 4] */ // Объявление функции создания массива и заполнения его случайными числами function сreateArray($N) { for ( $i = 0; $i < $N; $i++ ) { $array[] = rand( 1, 20 ); } return $array; } // Объявление функции фильтрации массива function filterateArray($array, $forbidden) { for ( $i = 0; $i < count($array); $i++ ) { if (in_array($array[$i], $forbidden)) { return NULL; } else { echo $array[$i]." "; } } } $restrictedNumbers = [12, 5, 17, 6, 4]; // Массив чисел, которые не должны выводиться на экран $sourceArray = сreateArray(10); // Вызов функции создания массива случайных чисел filterateArray($sourceArray, $restrictedNumbers); // Вызов функции вывода на экран чисел, которые не содержатся в массиве ?>Pavel1989
Fri, 10/05/2018 - 18:27
Permalink
Без in_array()
<?php /*На вход вашей программе подаётся массив случайных чисел (10 элементов) из диапазона от 1 до 20. Задача: вывести на экран все числа, которые не содержатся в массиве $b = [12, 5, 17, 6, 4] */ // Объявление функции создания массива и заполнения его случайными числами function сreateArray($N) { for ( $i = 0; $i < $N; $i++ ) { $array[] = rand( 1, 20 ); } return $array; } // Объявление функции фильтрации массива function filterateArray($array) { for ( $i = 0; $i < count($array); $i++ ) { // Условие запрещающее вывод на экран чисел из массива $b = [12, 5, 17, 6, 4] if ($array[$i] != 12 && $array[$i] != 5 && $array[$i] != 17 && $array[$i] != 6 && $array[$i] != 4 ) { echo $array[$i]." "; } else { return null; } } } $sourceArray = сreateArray(10); // Вызов функции создания массива случайных чисел filterateArray($sourceArray); // Вызов функции вывода на экран чисел, которые не содержатся в массиве ?>melisa
Fri, 10/05/2018 - 19:52
Permalink
неверно
if ($array[$i] != 12 && $array[$i] != 5 && $array[$i] != 17 && $array[$i] != 6 && $array[$i] != 4 ) {}В целом верно, но более красивое решение можно написать с помощью оператора switch. Это стандартное решение, когда у вас много условий.
Pavel1989
Fri, 10/05/2018 - 20:33
Permalink
Исправил
<?php /*На вход вашей программе подаётся массив случайных чисел (10 элементов) из диапазона от 1 до 20. Задача: вывести на экран все числа, которые не содержатся в массиве $b = [12, 5, 17, 6, 4] */ // Объявление функции создания массива и заполнения его случайными числами function сreateArray($N) { for ( $i = 0; $i < $N; $i++ ) { $array[] = rand( 1, 20 ); } return $array; } // Объявление функции фильтрации массива function filterateArray($array, $forbidden) { for ( $i = 0; $i < count($array); $i++ ) { if (in_array($array[$i], $forbidden)) { echo NULL; } else { echo $array[$i]." "; } } } $restrictedNumbers = [12, 5, 17, 6, 4]; // Массив чисел, которые не должны выводиться на экран $sourceArray = сreateArray(10); // Вызов функции создания массива случайных чисел filterateArray($sourceArray, $restrictedNumbers); // Вызов функции вывода на экран чисел, которые не содержатся в массиве ?>Pavel1989
Fri, 10/05/2018 - 20:34
Permalink
Без in_array()
<?php /*На вход вашей программе подаётся массив случайных чисел (10 элементов) из диапазона от 1 до 20. Задача: вывести на экран все числа, которые не содержатся в массиве $b = [12, 5, 17, 6, 4] */ // Объявление функции создания массива и заполнения его случайными числами function сreateArray($N) { for ( $i = 0; $i < $N; $i++ ) { $array[] = rand( 1, 20 ); } return $array; } // Объявление функции фильтрации массива function filterateArray($array) { for ($i = 0; $i < count($array); $i++ ) { switch ($array[$i]) { case 12: echo null; break; case 5: echo null; break; case 17: echo null; break; case 6: echo null; break; case 4: echo null; break; default: echo $array[$i]." "; } } } $sourceArray = сreateArray(10); // Вызов функции создания массива случайных чисел filterateArray($sourceArray); // Вызов функции вывода на экран чисел, которые не содержатся в массиве ?>melisa
Sat, 10/06/2018 - 11:43
Permalink
echo null;бесполезная строка
бесполезная строка
почитайте здесь, какие варианты switch могут быть. возможно, без некоторых break можно обойтись
Pavel1989
Sat, 10/06/2018 - 14:55
Permalink
Доработал
<?php /*На вход вашей программе подаётся массив случайных чисел (10 элементов) из диапазона от 1 до 20. Задача: вывести на экран все числа, которые не содержатся в массиве $b = [12, 5, 17, 6, 4] */ // Объявление функции создания массива и заполнения его случайными числами function сreateArray($N) { for ( $i = 0; $i < $N; $i++ ) { $array[] = rand( 1, 20 ); } return $array; } // Объявление функции фильтрации массива function filterateArray($array) { for ($i = 0; $i < count($array); $i++ ) { switch ($array[$i]) { case 12: case 5: case 17: case 6: case 4: break; default: echo $array[$i]." "; } } } $sourceArray = сreateArray(10); // Вызов функции создания массива случайных чисел filterateArray($sourceArray); // Вызов функции вывода на экран чисел, которые не содержатся в массиве ?>melisa
Mon, 10/08/2018 - 11:35
Permalink
принято
принято