Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2011, 23:10   #1
vadiprog
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 96
По умолчанию цикл while do

Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае.

Операцией возведения в степень пользоваться нельзя!

написать на Delphi
vadiprog вне форума Ответить с цитированием
Старый 20.11.2011, 23:27   #2
vadiprog
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 96
По умолчанию

Написал сам
Код:
var n:real;
begin
readln(n);
while n>=2 do
n:=n/2;
if n=1 then write('YES') else write('NO');
end.
vadiprog вне форума Ответить с цитированием
Старый 21.11.2011, 00:51   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Проблемы в вашем коде начинаются с числа $800000000000001
Вот эта единичка на хвосте потеряется в результате многочисленных делений, и программа выдаст YES

Можно вполне обойтись и без плавающей точки, и код будет отрабатывать всегда корректно:

Код:
var
  s: string;
  n: Int64;
begin
  readln(n);
  s := 'YES';
  while (1 < n) do
    if (0 <> (n and 1)) then begin
      //
      s := 'NO';
      break;
    end
    else
      n := n shr 1;
  //
  writeLn(s);
end.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 21.11.2011 в 01:06.
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл Koluyn12 Паскаль, Turbo Pascal, PascalABC.NET 8 08.06.2010 20:51
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 19:23
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34