+ Задача № 39. Проверить, является ли натуральное число степенью двойки
Primary tabs
<?php
$a = 6 ;
$c =$a ;
while ( $a % 2 ==0 )
{
$a = $a/2 ;
}
if ($a==1)
{
echo "Число ", $c , " степень числа 2" ;
}
else
{
echo "Число ", $c , " е является степенью числа 2" ;
}
?>
- Log in to post comments
- 18505 reads
fgh
Wed, 10/07/2015 - 12:53
Permalink
Уважаемые пользователи ! Если
Уважаемые коллеги ! Если решать задачу без ввода переменной $c , то будет код :
<?php $a = 6 ; while ( $a % 2 ==0 ) { $a = $a/2 ; } if ($a==1) { echo "Число ", $a , " степень числа 2" ; } else { echo "Число ", $a , " е является степенью числа 2" ; } ?>Вопрос , как ограничить зону видимости переменной "a" в цикле ,чтобы функция echo вывела значение переменной $a изначально , а не 1 (один) .
vedro-compota
Wed, 10/07/2015 - 13:50
Permalink
проверьте отображение:
проверьте отображение:
в одной строке в данный момент знаки доллора нельзя использовать - иначе трактуется как latex.
Обновлено: поправлю сам - но в будущем контролируйте то как выглядит текст.
_____________
матфак вгу и остальная классика =)
math2
Sat, 10/10/2015 - 01:07
Permalink
Можно просто вывести \$a до
Можно просто вывести \$a до его изменения.
<?php $a = 128; echo "Число ", $a; while ( $a % 2 == 0 ) $a = $a / 2; if ( $a == 1 ) echo " является степенью числа 2.\n"; else echo " не является степенью числа 2.\n"; ?>vedro-compota
Sat, 10/10/2015 - 12:08
Permalink
math2
math2
...и тем самым избежать хоть и миниатюрного, но дублирования кода!))
_____________
матфак вгу и остальная классика =)
vedro-compota
Wed, 10/07/2015 - 14:04
Permalink
Вопрос , как ограничить зону
задавайте вопросы в отдельных темах. (уже было сказано) - но сейчас (так и быть) отвечу здесь.
То есть - вы не можете решить проблему в данном случае, используя механизм областей видимости, но можете, например, сохранить значение в другой переменной вместо:
написав вначале:
_____________
матфак вгу и остальная классика =)
fgh
Wed, 10/07/2015 - 19:58
Permalink
Спасибо , по сути ,
Спасибо , по сути , необходимо просто приравнять переменные и использовать их в разных областях кода .
vedro-compota
Thu, 10/08/2015 - 10:34
Permalink
Да, так и есть. Просто
Да, так и есть. Просто "запомнить" значение.
_____________
матфак вгу и остальная классика =)
math2
Sat, 10/10/2015 - 01:13
Permalink
Добавил рекурсию.
Добавил рекурсию.
<?php //Если аргумент---степень двойки, то функция twopow вернёт TRUE. function twopow($n) { if ( $n % 2 == 0 ) return twopow($n/2); else { if ($n == 1) return TRUE; else return FALSE; } } function prnt ($m) { if (twopow($m)) echo "Число $m является степенью числа 2.\n"; else echo "Число $m не является степенью числа 2.\n"; } prnt(1024); prnt(6); prnt(128); ?>