3 / 3 / 0
Регистрация: 23.06.2015
Сообщений: 34
|
|
1 | |
Вводится число. Определить, является ли оно степенью двойки.24.11.2007, 06:08. Показов 14929. Ответов 9
Метки нет Все метки)
(
Вводится число. Определить, является ли оно степенью двойки. P.S. Сойдёт и консольный вариант! Я уж как нибудь "пере-оформлю" в визуальный вариант! 8)
0
|
|
24.11.2007, 06:08 | |
Ответы с готовыми решениями:
9
Определить, является ли оно степенью числа 2 Определить, является ли число степенью двойки
|
Почетный модератор
7390 / 2636 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
24.11.2007, 14:58 | 2 |
Интересный вопрос. Не имею понятия об "официальном" решении. Но мне в голову пришла мысль делить число на два пока не получим остаток от деления. Если он есть, значит число не степень двойки. Если мы разделили и получили число 2, значит степень двойки. К примеру:
Ввели 8 8:2 = 4; 4:2 = 2; Ввели 10 10:2 = 5; 5:2 = 2 и 1 в остатке. Любые числа деленные на два, в конце-концов, придут к числам меньше 10. Поэтому те числа, что придут к 4, 8 являются степенью двойки.
0
|
Serjoga.
|
|
26.11.2007, 03:05 | 3 |
Идея толковая!
![]() |
Почетный модератор
7390 / 2636 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
26.11.2007, 15:16 | 4 |
Напишу чуть позже. Вот только домой вернусь.
А пока без компилятора на вскидку: Код
while (((i mod 2);1) or (i ; 2)) do i:= i/2; if (i;2) then writeln('It is not a power of two') else writeln('Yes it is');
0
|
Serjoga.
|
|
28.11.2007, 03:51 | 5 |
На вскидку получилось не совсем как надо. Я создал проект попробовал запустить, но в цикле где то спряталась ошибка!
![]() Код
procedure TForm1.Button1Click(Sender: TObject); var i: extended; begin i:=StrToFloat(Edit1.Text); while (((i mod 2);1) or (i ; 2)) do i:= i/2; if (i;2) then Label1.Caption:=('It is not a power of two!') else Label1.Caption:=('Yes it is!'); end; |
Почетный модератор
7390 / 2636 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
28.11.2007, 22:17 | 7 |
Код
var n:integer; begin writeln('Input a digit'); readln(n); while((n;2) and ((n mod 2) ; 1)) do n := floor(n/2); if (n ; 2) then writeln('It isn''t a power of two') else writeln('It is a power of two'); readln; end.
1
|
Serjoga.
|
|
29.11.2007, 06:34 | 8 |
Спасибо!
![]() |
Ukruk
|
|
18.10.2009, 01:53 | 9 |
|
Почетный модератор
64288 / 47587 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
|
|
18.10.2009, 09:12 | 10 |
Посмотри здесь.
Определить является ли число степенью двух
0
|
18.10.2009, 09:12 | |
Помогаю со студенческими работами здесь
10
Как определить, что число является степенью двойки?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |