Помощь - Поиск - Пользователи - Календарь
Полная версия: Хитрая задача,
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
zhorik
Задача:

Дано натуральное число m. Найти такое натуральное число n, двоичная запись которого получается из двоичной записи m изменением порядка цифр на обратный.

ломаю голову несколько дней

как делать представляю:

1)преобразовать введенное число в двоичный вид
2)поменять порядок цифр на обратный
3)преобразовать полученное число в десятичный вид

с первыми двумя пунтками проблем не возникает, а вот с третьим проблема.

Делаю так:
Код


program test;
uses
crt;

var
x, xxx,  d, c, rez, n  : integer;
res,ves:longint; i,j:byte;
y : real;

begin
clrscr;
readln(x);
rez:=0;
n:=0;

xxx:=x;

{в этом цикле узнаю кол-во повторов цикла}
while xxx<>0 do begin
d:=xxx mod 2;
xxx :=xxx div 2;
n :=n+1;
end;

n :=n-1;

{Нахожу двоичный вид введенного числа, изменяю порядок цифр на обратный и пытаюсь получить десятичный вид числа}
while x<>0 do begin
d:=x mod 2;
x :=x div 2;
rez := d*(2*n)+rez;
n := n-1;
end;

writeln(rez);
readln;
end.



у кого какие мысли по поводу решения этой задачки?


мисс_граффити
почитай FAQ
Malice
Поменяй строку:
rez := d*(2*n)+rez;

на
rez := d+rez*2;

yes2.gif
zhorik
Цитата(Malice @ 4.01.2007 22:57) *

Поменяй строку:
rez := d*(2*n)+rez;

на
rez := d+rez*2;

yes2.gif


спасибо тебе огромное! smile.gif

я знал, что истина где-то рядом!
Malice
Цитата(zhorik @ 4.01.2007 23:07) *

спасибо тебе огромное! smile.gif

я знал, что истина где-то рядом!

Не за что, только тебе по сути не нужен вообще 1-ый цикл, т.к. его результат (n) дальше не используется. Убирай и его и лишние переменные (нужны только 2) и будет красота smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.