Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 063

/ вопрос открыт /

Здравствуйте, уважаемые эксперты! Помогите решить задачку: берется любое целое число, переводится в двоичную систему счисления. Затем начинаем сдвигать цифры полученного двоичного числа по циклу (так что последняя цыфра становится первой, а остальные сдвигаются на одну позицию вправо),выписывая образующиеся при этом последовательности из нулей и единиц в столбик. Потом находим максимальное из выписанных чисел и переводим его обратно в десятичную систему. ЗАДАЧА заключается в том, что это надо сделать все программно.

Help me, please.....

Приложение:
  1.  
  2.  


Примечание #1 (8 ноября 2008, 15:18):
На форме находится только одна кнопка и два едита.

Ученый Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Ученый (статус: 8-ой класс)
Вопрос отправлен: 8 ноября 2008, 15:00
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Мережников Андрей

Здравствуйте, Ученый!
Смотрите пример в приложении

Приложение:
  1. function BinToInt(Value: string): Integer;
  2. var
  3. i, iValueSize: Integer;
  4. begin
  5. Result := 0;
  6. iValueSize := Length(Value);
  7. for i := iValueSize downto 1 do
  8. if Value[i] = '1' then Result := Result + (1 shl (iValueSize - i));
  9. end;
  10.  
  11. function IntToBin(d: Longint): string;
  12. var
  13. x, p: Integer;
  14. bin: string;
  15. begin
  16. bin := '';
  17. for x := 1 to 8 * SizeOf(d) do
  18. begin
  19. if Odd(d) then bin := '1' + bin
  20. else
  21. bin := '0' + bin;
  22. d := d shr 1;
  23. end;
  24. Delete(bin, 1, 8 * ((Pos('1', bin) - 1) div 8));
  25. Result := bin;
  26. end;
  27.  
  28. procedure TForm1.Button1Click
  29. var s,maxs:string;
  30. i:integer;
  31. begin
  32. s:=IntToBin(StrToInt(edit1.text));
  33. maxs:=s;
  34. for i:=1 to length(s)-1
  35. do begin
  36. s:=s[length(s)]+copy(s,1,length(s)-1);
  37. if s>maxs
  38. then maxs:=s;
  39. end;
  40. edit2.text:=StrToInt(BinToInt(maxs));
  41. end;


Ответ отправил: Мережников Андрей (статус: Абитуриент)
Время отправки: 8 ноября 2008, 17:18
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 9 ноября 2008, 07:45; участников в обсуждении: 3.
Ученый

Ученый (статус: 8-ой класс), 8 ноября 2008, 17:35 [#1]:

То Мережников Андрей. Спасибо!!! сделал как вы сказали, но проблемма- борланд ругается и пишет [Hint] Unit1.pas(40): Variable 'p' is declared but never used in 'IntToBin'
Аксион

Аксион (статус: 4-ый класс), 8 ноября 2008, 19:44 [#2]:

[Hint] - это всего лишь подсказка, которая говорит о том, что переменная p обьявлена, но не использована.... не обращайте внимания или просто удалите обьявление этой переменной....
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 9 ноября 2008, 07:45 [#3]:

Да, это всего лишь подсказка, что в функции IntToBin объявлена переменная p, которая не используется, надо ее убрать из строки var

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:51
Выполнено за 0.02 сек.