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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2009, 12:06   #1
6AZblJlb
Пользователь
 
Аватар для 6AZblJlb
 
Регистрация: 04.12.2008
Сообщений: 46
По умолчанию Из десятиричной в шестнадтиричную

НЕобходимо перевести число из одной системы в другую....из 10-ой в 16-ую....я тут написал но что то не правильно.....
Код:
var
  a,i,j : longint;
  r,r1: string;
begin
 readln(a);
 r1:='';
 r:='0123456789ABCDEF';
 while a<>0 do begin
   i:=a mod 16;
   a:=a div 16;
   r1:=r1+r[i];
 end;

writeln(r1);
end.
Будь проще, и у тебя будет меньше делителей.
6AZblJlb вне форума Ответить с цитированием
Старый 06.01.2009, 13:00   #2
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Код:
function dec2hex(value: dword): string[8];
const
hexdigit = '0123456789ABCDEF';
begin
  while value <> 0 do
     begin
       dec2hex := hexdigit[succ(value and $F)];
       value := value shr 4;
    end;
  if dec2hex = '' then dec2hex := '0';
end;
взято из DRKB - полная версия. Рекомендуюскачать ее.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 06.01.2009, 13:05   #3
6AZblJlb
Пользователь
 
Аватар для 6AZblJlb
 
Регистрация: 04.12.2008
Сообщений: 46
По умолчанию

...спасибо...но что такое DRKB......и функция succ(value and $F) мне что т не понятно не мог бы ты поясниить..
Будь проще, и у тебя будет меньше делителей.
6AZblJlb вне форума Ответить с цитированием
Старый 06.01.2009, 13:41   #4
6AZblJlb
Пользователь
 
Аватар для 6AZblJlb
 
Регистрация: 04.12.2008
Сообщений: 46
По умолчанию

все разобрался все было немного проще....
Код:
var
  a,i,j : longint;
  r,r1: string;
begin
 readln(a);
 r1:='';
 r:='0123456789ABCDEF';
 while a<>0 do begin
   i:=a mod 16;
   a:=a div 16;
   r1:=r[i+1]+r1;
 end;

writeln(r1);
end.
Будь проще, и у тебя будет меньше делителей.
6AZblJlb вне форума Ответить с цитированием
Старый 06.01.2009, 14:01   #5
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

все проще. Я гоню, тот код не рабочий.
Код:
program dectohex;
uses crt;
var
ch:char;
i,j,m,n,k,l,a:integer;
s,st,s1,s2,s3:string;
begin
clrscr;
write(' -> ');
readln(n);
s:='0123456789ABCDEF';
writeln;
st:='';
repeat
a:=n mod 16;
st:=st+s[a+1];
n:=n div 16;
until n<16;
st:=st+s[n+1];
for i:=1 to length(st) div 2 do
begin
ch:=st[i];
st[i]:=st[length(st)-i+1];
st[length(st)-i+1]:=ch;
end;
write(st);
readln;
end.
должен работать. Глянь
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 06.01.2009, 16:27   #6
6AZblJlb
Пользователь
 
Аватар для 6AZblJlb
 
Регистрация: 04.12.2008
Сообщений: 46
По умолчанию

благодарю.....но вроде и мой прошел все тесты...
Будь проще, и у тебя будет меньше делителей.
6AZblJlb вне форума Ответить с цитированием
Ответ


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