Пример решения. 12. Сравнить каждый 3-й эл-т одного массива с каждым 2-м второго.
Primary tabs
Задача из этого списка
<?php /*Даны два массива по 20 элементов каждый (заполните случайными числами, так чтобы среди элементов массива при очередном запуске программы могли встретиться и отрицательные и положительные числа). Сравните каждый 3-ий элемент 1-ого массива с каждый 2-ым элементов 2-ого массива - сравнение проводите пока не закончится та выборка, которая короче. Например пусть мы имеем два массива (запишу лишь начальные элементы): 1 | 2 | -10 | 5 | 0 | 12 | 2 | 8 .... 0 | 3 | 4 | 9 | 7 | 5 | -8 | 3..... для них программа должна вывести: -10 меньше 3 12 больше 9 - других сравнений не последует, так как новых из "каждых третьих элементов" в 1-ом массиве больше нет. */ function create_array() // Создание массива случайных чисел { for ($i = 1; $i < 21; $i++) { $arr[$i] = rand(-20,20); } return $arr; } function new_array ($array, $k) // Создание нового массива, из каждого k-элемента предыдущего { $j = 1; for ($i = 1; $i <= count($array); $i++) { if ($i%$k == 0) { $n_array[$j] = $array[$i]; $j++; } } return $n_array; } function comparing_arrays ($a, $b) // Сравнение массивов { $i = 1; while (($i < count($a))&&($i < count($b))) { if ($a[$i] < $b[$i]) { echo $a[$i], " меньше ", $b[$i], "<br>"; } elseif ($a[$i] > $b[$i]) { echo $a[$i], " больше ", $b[$i], "<br>"; } elseif ($a[$i] == $b[$i]) { echo $a[$i], " равно ", $b[$i], "<br>"; } $i++; } } $first = create_array(); // Создание случайных массивов $second = create_array(); foreach ($first as $k => $value) { echo $k, "=", $value, "<br>"; } echo "<br>"; $n_first = new_array($first, 3); // Создание новых массивов $n_second = new_array($second, 2); foreach ($n_second as $k => $value) { echo $k, "=", $value, "<br>"; } echo "<br>"; comparing_arrays($n_first, $n_second); // Сравнение массивов
- Log in to post comments
- 7229 reads
vedro-compota
Mon, 04/24/2017 - 18:15
Permalink
Альтернативное решение
Вы использовали функцию для перестройки массивов -- это неплохой способ. Однако, предположим, что вы не можете перестроить массивы и вынуждены обходить их "одновременно" в одном цикле, т.е. представьте решение без ф-и new_array().
_____________
матфак вгу и остальная классика =)
melisa
Tue, 04/25/2017 - 08:59
Permalink
альтернативное решение
melisa
Mon, 04/24/2017 - 18:21
Permalink
Можно ли как-то изменить
Можно ли как-то изменить начало нумерации массива с [0] на [1] не в процессе создания, а когда уже создан? без помощи циклов?
Вот в этом месте хотелось бы упростить
vedro-compota
Mon, 04/24/2017 - 18:40
Permalink
можно всегда проверять ненастоящий индекс
Как бы считаем не от $0$, а от $0+1$:
-- проверяем тот же самый элемент, но под "виртуальным" номер, как бы делая "сдвиг".
_____________
матфак вгу и остальная классика =)