Задача №6 - Вывести в обратной последовательности только нечетные цифры
Primary tabs
Задачи №6 из этого списка:
Условие задачи:
Дано некоторое число длиной от 1 до 5 символов, вывести все его "нечётные" цифры в обратном порядке (аналогично предыдущей задаче), если же таких цифр не найдёт, вывести сообщение "Нечетных цифр не обнаружено!"
Мое решение:
<?php $a = rand(10000, 99999); echo $a . '<br>'; global $i; $i = 0; while ($a>1){ $b = $a % 10; if ($b % 2 > 0) { echo $b . '<br>'; $i = $i + 1; } $a = $a / 10; } if ($i == 0) { echo 'Нечетных цифр не обнаружено!' . '<br>'; }
- Log in to post comments
- 7466 reads
melisa
Fri, 10/19/2018 - 17:52
Permalink
пара вопросов
прочитайте для чего нужно global. Ответьте: целесообразно ли использовать global в том месте, где Вы использовали? А внутри цикла while?
Используйте сокращённую запись при операции переменной над собой же.
iov84
Sun, 10/21/2018 - 20:20
Permalink
тройка ответов )))
Вот исправленный код:
Ответы:
1. По поводу global:
не целесообразно использовать как в том месте где я его использовать, так и внутри цикла while... но мне не совсем понятно почему... мы же операции с i проводим внутри цикла while, потом выходим из while, заходим в if и там i все равно видно... как так? Где магия?
2. Код поправил... sorry... я буду внимательнее... я буду внимательнее... я буду внимательнее (повторял Олег еще очень-очень долго) ))))))
3. Сокращенную запись начинаю использовать, но т.к. я её только начинаю использовать она мне кажется такой не удобной, такой не информативной... но надо ломать стереотипы )))
melisa
Mon, 10/22/2018 - 19:23
Permalink
пояснение
Вы свсем удалили объявление $i - это намеренно или случайно? Это вызывает ошибку. Я имела ввиду, что нецелесообразно использовать слово global, а объявить надо.
Прочитайте про области видимости переменных. Область видимости внутри циклов и операторов не меняется. Где область видимости была бы другая?
iov84
Sun, 11/11/2018 - 18:39
Permalink
Где область видимости была бы
Почитав про область видимости понял следующее: если объявить переменную, а потом запустить цикл или условие if ну и т.д., то переменная будет видна внутри циклов и условий, заданных после объявления переменной, но если объявить переменную внутри цикла или условия или функции и т.д., то эта переменная будет доступна только внутри этого цикла или условия или функции... я правильно понял?
Исходя из логики, замечаний и исправлений прошлой задачи поправил код:
melisa
Mon, 11/19/2018 - 13:09
Permalink
область видимости
Нет. Область видимости связана с понятем функции. Но не с циклами или телами операторов. Область видимости внутри функции отличается от глобальной.
Это значит, что всё, что Вы объявили внутри функции доступно только внутри функции. Всё, что Вы объявили вне функции, в ней не доступно.
Всё, что объявлено глобально, видно и в цикле, и в теле оператора if.
Это по умолчанию. Исключения есть, например, передача переменных по ссылке или обращение к глобальным переменным.
melisa
Mon, 11/19/2018 - 13:10
Permalink
принято
но обратите внимание снова на неочевидность:
Уже писала об этом здесь.