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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2008, 02:06   #1
Dmit5551
 
Регистрация: 22.11.2008
Сообщений: 4
По умолчанию Сложнейшая задача!!!Помогите!!!

как установить единицу в самый правый нулевой бит в произвольном целом числе, не используя циклов и рекурсии?
Уже неделю сижу с ней, и никак не могу решить(( Помогите,пожалуйста...
Dmit5551 вне форума Ответить с цитированием
Старый 22.11.2008, 09:05   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

F1 + xor or and
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 22.11.2008, 11:09   #3
Dmit5551
 
Регистрация: 22.11.2008
Сообщений: 4
По умолчанию

А можно как-нибудь поподробнее немного?!..
Dmit5551 вне форума Ответить с цитированием
Старый 22.11.2008, 11:22   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Решение в лоб:
Код:
var A: Word;
begin
  Write ('Vvedite A: ');
  ReadLn (A);
  if A or $0001 <> A then A := A or $0001
  else if A or $0002 <> A then A := A or $0002
  else if A or $0004 <> A then A := A or $0004
  else if A or $0008 <> A then A := A or $0008
  else if A or $0010 <> A then A := A or $0010
  ...
  else if A or $4000 <> A then A := A or $4000
  else if A or $8000 <> A then A := A or $8000;
  WriteLn ('New A = ', A);
  ReadLn;
end.
Arigato вне форума Ответить с цитированием
Старый 22.11.2008, 20:55   #5
Dmit5551
 
Регистрация: 22.11.2008
Сообщений: 4
По умолчанию

Хм, спасибо... хотелось бы вариант не в лоб)...Есть такие варианты?
Dmit5551 вне форума Ответить с цитированием
Старый 22.11.2008, 22:50   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Без циклов и рекурсии что-то не придумаю.
Я бы использовал команду bsf в ассемблерной вставке, но она только начиная с 386, а Паскаль компилирует максимум под 286.
Arigato вне форума Ответить с цитированием
Старый 22.11.2008, 23:55   #7
Dmit5551
 
Регистрация: 22.11.2008
Сообщений: 4
По умолчанию

А черт с ним, покажи как решается с циклом или с рекурсией (второе предпочтительнее)...
Dmit5551 вне форума Ответить с цитированием
Старый 23.11.2008, 00:14   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Нет уж. Вы показывайте, а мы будем исправлять недочёты.
Цитата:
Уже неделю сижу с ней, и никак не могу решить
Что за неделю было сделано?
Arigato вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача по СИ++,помогите чайнику... Nikska Помощь студентам 1 20.05.2008 15:16
Олимпиалная задача помогите lexus Помощь студентам 3 13.11.2007 00:13