Задача №12 - Сравнение 2-ого и 3-его элемента разных массивов
Primary tabs
Задача №12 из этого списка:
Условие задачи:
Даны два массива по 20 элементов каждый (заполните случайными числами, так чтобы среди элементов массива при очередном запуске программы могли встретиться и отрицательные и положительные числа). Сравните каждый 3-ий элемент 1-ого массива с каждый 2-ым элементов 2-ого массива - сравнение проводите пока не закончится та выборка, которая короче.
Мое решение:
Реализация №1:
<?php function createArray ($n){ for ($i = 0; $i < $n; $i++){ $arr[$i] = rand(-15, 15); } return $arr; } $a = createArray(20); $b = createArray(20); var_dump($a); var_dump($b); echo '<br>'; function companeElementsOfTheArrays($x, $y) { $j = 2; for ($i = 3; $i < count($x); $i += 3) { if ($x[$i] > $y[$j]) { echo $x[$i] . ' больше ' . $y[$j] . '<br>'; } elseif ($x[$i] < $y[$j]) { echo $x[$i] . ' меньше ' . $y[$j] . '<br>'; } elseif ($x[$i] == $y[$j]) { echo $x[$i] . ' равно ' . $y[$j] . '<br>'; } $j += 2; } } companeElementsOfTheArrays($a, $b);
Реализация №2:
<?php function createArray ($n){ for ($i = 0; $i < $n; $i++){ $arr[$i] = rand(-15, 15); } return $arr; } $a = createArray(20); $b = createArray(20); var_dump($a); var_dump($b); echo '<br>'; function companeElementsOfTheArrays($x, $y) { for ($i = 3, $j = 2; $i < count($x), $j < count($y); $i += 3, $j += 2) { if (array_key_exists($i, $x) & array_key_exists($j, $y)) { if ($x[$i] > $y[$j]) { echo $x[$i] . ' больше ' . $y[$j] . '<br>'; } elseif ($x[$i] < $y[$j]) { echo $x[$i] . ' меньше ' . $y[$j] . '<br>'; } elseif ($x[$i] == $y[$j]) { echo $x[$i] . ' равно ' . $y[$j] . '<br>'; } } else { break; } } } companeElementsOfTheArrays($a, $b);
- Log in to post comments
- 6048 reads
melisa
Mon, 11/19/2018 - 12:43
Permalink
замечания
В этом случае используется оператор && вместо &, т.к. & сравнивает побитовое значение выражений. Про это можно почитать здесь.
iov84
Mon, 11/19/2018 - 21:15
Permalink
исправления
Реализация №1:
Комментарий: Да, я понял свою ошибку, массивы начинаются же с 0, впредь буду внимательнее:
Реализация №2:
Комментарий:
Почитал... почитал то, что Вы мне скинули, почитал на php.net... не то, чтобы я ничего не понял, но осталось такое ощущение, будто я до чего-то не "догоняю", скажем там не особо приятное ощущение. Понял что оператор & - это побитовый оператор, а оператор && - это логический оператор (что мне собственно и нужно), понял что в php побитовый оператор & имеет более высокий приоритет и исполнения чем логический оператор &&, понял по какому принципу происходит сравнение 0 и 1 в битовой вселенной (если ее можно так назвать)... но для чего это нужно и когда это нужно использовать, и если код настоящий код работает, то почему нельзя оставить & понять не могу... наверно со временем я разберусь, но если Вы мне хотя бы намекнете не вдаваясь в подобности когда актуально применять &, а также порекомендуете литературу на этот счет - буду признателен!
melisa
Wed, 11/21/2018 - 14:00
Permalink
и если код настоящий код
Тут всё просто. Если Вы "не совсем догоняете", как работает определённый оператор, никогда его не используйте, потому что последствия для Вас непредсказуемы.
melisa
Wed, 11/21/2018 - 14:02
Permalink
принято
принято