Учебные задачи PHP. Задача 6
Primary tabs
Решение задачи с четными цифрами:
<?php function outputNumberInReverseOrder($number) { echo $number, " = <br>"; $arr = array(); while ($number >= 1) { $remainderOfDivision = $number % 10; if ($remainderOfDivision % 2 == 1) { $arr[] = $remainderOfDivision; } if ($remainderOfDivision % 2 == 1) { echo $remainderOfDivision, "<br>"; } $numberDividedBy10 = $number / 10; $number = $numberDividedBy10; } if ($arr === []) { echo "Нечетных цифр не обнаружено! <br>"; } } outputNumberInReverseOrder(2468); ?>
Решение задачи с нечетными цифрами:
<?php function outputNumberInReverseOrder($number) { echo $number, " = <br>"; $arr = array(); while ($number >= 1) { $remainderOfDivision = $number % 10; if ($remainderOfDivision % 2 == 1) { $arr[] = $remainderOfDivision; } if ($remainderOfDivision % 2 == 1) { echo $remainderOfDivision, "<br>"; } $numberDividedBy10 = $number / 10; $number = $numberDividedBy10; } if ($arr === []) { echo "Нечетных цифр не обнаружено! <br>"; } } outputNumberInReverseOrder(1357); ?>
- Log in to post comments
- 15816 reads
melisa
Fri, 04/19/2019 - 14:10
Permalink
замечания
Не поняла смысла. Вроде оба варианта решения одинаковы)
Некорректное имя переменной. Оно не должно содержать цифр.
Не нужно запрашивать условие для каждой операции, можно написать в теле одного if оба действия
В современный версиях php используется укороченная запись:
Вместо оператора сравнения воспользуйтесь встроенной функцией php, empty()
Laven
Fri, 04/19/2019 - 15:49
Permalink
Вместо оператора сравнения воспользуйтесь встроенной функцией ph
Да, спасибо. На просторах инета видел этот вариант. Но один товарищ сказал:
Что тоже мне показалось интересным.
melisa
Fri, 04/19/2019 - 15:55
Permalink
Целесообразность разных
Целесообразность разных способов, конечно, нужно рассматривать в каждом конкретном случае. В данном я предложила использовать функцию с целью ознакомления с альтернативным вариантом.
Laven
Fri, 04/19/2019 - 16:24
Permalink
Переработал код задачи
Несколько расширил условия задачи с дополнительными выводами.
melisa
Fri, 04/19/2019 - 16:31
Permalink
if ((!($remOfDivArrOdd == [])
Всю эту конструкцию можно написать короче с помощью оператора elseif
Неверно эту строку писать внутри условий, т.к. условия никак на неё не влияют. и от них она не зависит. тем более трижды.
Для отрицания равенства существуют свои операторы сравнения.
Laven
Fri, 04/19/2019 - 20:17
Permalink
Спасибо. Переделал
Спасибо. Переделал.
Насчет этого момента:
Я, возможно, где-то здесь недопонимаю, но, в тестовом режиме, я подставлял поочередно два массива (для четных и нечетных цифр) и видел, как это условие:
или
влияло на результат, т.е. выводило либо четные, либо нечетные цифры.
Другой момент, когда я ставил подряд два эти условия:
то выполнялось только первое условие по ходу движения.
Строка 25. Я поставил
что против условия задачи (выводить в обр порядке НЕчетные цифры), код стал выводить ЧЕтные цифры в обр порядке, как в этом примере:
melisa
Tue, 04/23/2019 - 12:02
Permalink
возвращаемое значение
в задаче просили выводить только нечётные цифры или текст в случае их отсутствия. Я не против, если Вы сделали немного бОльшую работу, однако у нас из-за этого возникли дополнительные трудности.
Так вот, естественно, что если Вы возвращаете две разных переменных, результат меняется. Но в Вашем коде Вы возвращаете одну и ту же переменную 3 раза. Это избыточный код, да ещё и не в том месте.
Условия elseif влияют только на текст, который Вы печатаете с помощью echo прямо внутри функции. На возвращаемое значение условия НИКАК не влияют, а значит, не надо его возвращать внутри условий (тем более внутри каждого условия), а возвращайте ниже.
Возвращается при любом тексте одно и то же значение. Видите?
По этому комментарию видно, что Вы так и не поняли смысла возврата значения функцией. Как только функция натыкается на команду return, она прекращает дальнейшее чтение кода и выводит наружу результат. Всё, что ниже не будет прочитано никогда.
В последнем варианте решения Вы уже и чётные выводите, что прямо противоречит условию. Давайте лучше, будем поступательно двигаться и дайте сначала результат чётко соответствующий запросу задачи.
Laven
Tue, 04/23/2019 - 19:20
Permalink
Исправил код задачи
melisa
Tue, 04/30/2019 - 16:59
Permalink
чётные цифры нам не нужны
это избыточный код
это тоже
Laven
Tue, 04/30/2019 - 18:22
Permalink
Исправил код задачи
melisa
Tue, 04/30/2019 - 18:27
Permalink
запустите код
предупреждений быть не должно
Laven
Tue, 04/30/2019 - 18:32
Permalink
Исправил код задачи
Странно, при первом запуске не было этой записи, хотя я ее ожидал. При втором запуске - она появилась.
ИСПРАВИЛ.
melisa
Tue, 04/30/2019 - 18:59
Permalink
принято
принято