Задача №12. php Заполнение масссивов, сравнение элементов
Primary tabs
Даны два массива по 20 элементов каждый (заполните случайными числами, так чтобы среди элементов массива при очередном запуске программы могли встретиться и отрицательные и положительные числа).
Сравните каждый 3-ий элемент 1-ого массива с каждым 2-ым элементом 2-ого массива - сравнение проводите пока не закончится та выборка, которая короче.
Задача отсюда.
<?php function rand_array($chislo) { for($i = 0; $i < $chislo; $i++) { $mas[$i] = rand(-30, 15); } return $mas; } function poluchaem_znachenie($arr) { foreach($arr as $v) { echo ' | ', $v, ' | '; } echo "<br>"; } function sravnenie_m1_vs_m2($mama, $papa, $doch, $sin) { while($doch < count($mama) && $sin < count($papa) ) { if($mama[$doch] > $papa[$sin]) { echo $mama[$doch], " bolshe ", $papa[$sin], "<br>"; } elseif($mama[$doch] < $papa[$sin]) { echo $mama[$doch], " menshe ", $papa[$sin], "<br>"; } elseif($mama[$doch] == $papa[$sin]) { echo $mama[$doch], " ravno ", $papa[$sin], "<br>"; } $doch += 3; $sin += 2; } } $n = 20; $m1 = rand_array($n); $m2 = rand_array($n); poluchaem_znachenie($m1); poluchaem_znachenie($m2); sravnenie_m1_vs_m2($m1, $m2, 2, 1); ?>
- Log in to post comments
- 16271 reads
math2
Mon, 08/07/2017 - 23:43
Permalink
Можно сделать эти смещения
Можно сделать эти смещения параметрами функции, то есть указывать, какой по счёту элемент брать из первого массива, и какой -- из второго.
sid
Tue, 08/08/2017 - 10:56
Permalink
Спасибо и еще одна проверка
Спасибо и еще одна проверка на равенство лишняя была.
vedro-compota
Tue, 08/08/2017 - 14:28
Permalink
другой цикл
-- а что если использовать в этой функции вместо while цикл foreach? Приведите пожалуйста альтернативное (ещё одно) решение именно с foreach.
_____________
матфак вгу и остальная классика =)
vedro-compota
Tue, 08/08/2017 - 16:33
Permalink
уточнение
Подскажу/уточню: ведь оба массива равной длины, так что проблем с использованием foreach быть не должно (в качестве аргумента foreach можно использовать только один из них -- не важно какой)
_____________
матфак вгу и остальная классика =)
math2
Tue, 08/08/2017 - 16:37
Permalink
Сравните каждый 3-ий элемент
можно понимать, как если бы каждый с каждым нужно было сравнивать.
То есть 2-ой элемент первого массива с 3-м, 6-м, 9-м, ... второго массива, 4-й элемент первого массива с 3-м, 6-м, 9-м, ... второго массива, и т.д.
А не так, что для $i=1,\ 2,\ 3,\ldots$ только
$(2\cdot i)$-й элемент первого массива сравнивается с $(3\cdot i)$-м элементом второго.
vedro-compota
Tue, 08/08/2017 - 17:00
Permalink
Подразумевается попарное
Подразумевается попарное сравнение.
_____________
матфак вгу и остальная классика =)
vedro-compota
Wed, 08/09/2017 - 19:16
Permalink
foreach
Ознакомьтесь с этим примечанием к задаче, там указана основная идея.
_____________
матфак вгу и остальная классика =)
vedro-compota
Fri, 08/11/2017 - 18:20
Permalink
решение с помощью foreach
Также прошу обратить внимание на правила именования функций и переменных. Не надо давать имена типа "дочь" и "сын" -- в случае если это просто номера позиций (для массивов такие понятия не используются, обычно для деревьев, где есть иерархия). Имена должны быть максимально полными, простыми и понятными -- по ситуации.
Также не следует использовать транслит:
лучше хоть как-то перевести на английский -- намного проще:
_____________
матфак вгу и остальная классика =)
math2
Fri, 08/11/2017 - 18:31
Permalink
Я тоже подготовил решение.
Я тоже подготовил решение.
vedro-compota
Wed, 09/27/2017 - 14:35
Permalink
с фактическим сравнением
Решение math2, но с фактическим сравнением:
_____________
матфак вгу и остальная классика =)