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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2010, 13:23   #1
koysara
 
Регистрация: 19.01.2010
Сообщений: 8
Вопрос Как перевести из двоичной системы счисления в восьмеричную и шестнадцатеричную

Помогите пожалуйста с задачей:
Дано число в двоичной системе счисления.
Нужно перевести его в восьмеричную и шестнадцатеричную системы.
Реализовать это все нужно с помощью модуля.
koysara вне форума Ответить с цитированием
Старый 13.10.2010, 13:42   #2
Gambler
Игрок
Форумчанин
 
Аватар для Gambler
 
Регистрация: 29.10.2006
Сообщений: 367
По умолчанию

Код:
FUNCTION BIN2HEX(BIN: STRING): STRING;

FUNCTION SetHex(St: STRING; VAR Error: BOOLEAN): CHAR;

VAR
Ch: CHAR;

BEGIN
IF St = '0000' THEN Ch := '0'
ELSE IF St = '0001' THEN Ch := '1'
ELSE IF St = '0010' THEN Ch := '2'
ELSE IF St = '0011' THEN Ch := '3'
ELSE IF St = '0100' THEN Ch := '4'
ELSE IF St = '0101' THEN Ch := '5'
ELSE IF St = '0110' THEN Ch := '6'
ELSE IF St = '0111' THEN Ch := '7'
ELSE IF St = '1000' THEN Ch := '8'
ELSE IF St = '1001' THEN Ch := '9'
ELSE IF St = '1010' THEN Ch := 'A'
ELSE IF St = '1011' THEN Ch := 'B'
ELSE IF St = '1100' THEN Ch := 'C'
ELSE IF St = '1101' THEN Ch := 'D'
ELSE IF St = '1110' THEN Ch := 'E'
ELSE IF St = '1111' THEN Ch := 'F'
ELSE Error := True;
SetHex := Ch;
END;

VAR
HEX  : STRING;
I    : INTEGER;
Temp : STRING[4];
Error: BOOLEAN;

BEGIN
Error := False;
IF BIN = '0' THEN HEX := '0'
ELSE
BEGIN
Temp := '';
HEX := '';
IF Length(BIN) MOD 4 <>0 THEN
REPEAT
BIN := '0' + BIN;
UNTIL Length(BIN) MOD 4 = 0;
FOR I := 1 TO Length(BIN) DO
BEGIN
Temp := Temp + BIN[i];
IF Length(Temp) = 4 THEN
BEGIN
HEX := HEX + SetHex(Temp, Error);
Temp := '';
END;
END;
END;
IF Error THEN BIN2HEX := '0'
ELSE BIN2HEX := HEX;
END;
во какой вариант нашел.... Самому смешно. Но как говорится раз не себе, значит лишь бы работало.
Жизнь всегда игра. Но смерть - не всегда поражение.

#define true (Math.random()>0.5) //Удачной отладки
Gambler вне форума Ответить с цитированием
Старый 13.10.2010, 13:47   #3
Gambler
Игрок
Форумчанин
 
Аватар для Gambler
 
Регистрация: 29.10.2006
Сообщений: 367
По умолчанию

Код:
function bin2oct(b: string): string;
var
  i: integer;
  r: string;
begin
  while length(b) mod 3 <> 0 do
    b := '0' + b;
  r := '';
  for i := 1 to length(b) div 3 do
    r := r + chr((ord(b[i*3-2]) * 4 + ord(b[i*3-1]) * 2 + ord(b[i*3])) - ord('0') * (7-1));
  bin2oct := r;
end;
гугл помогает всегда.... Надо только с ним подружиться
Жизнь всегда игра. Но смерть - не всегда поражение.

#define true (Math.random()>0.5) //Удачной отладки
Gambler вне форума Ответить с цитированием
Старый 13.10.2010, 19:10   #4
koysara
 
Регистрация: 19.01.2010
Сообщений: 8
По умолчанию

Спасибо огромное, прога реализована
koysara вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
модуль с двоичной системой счисления MishanyaZWER Паскаль, Turbo Pascal, PascalABC.NET 4 19.04.2010 18:49
Перевод числа с десятичной системы в восьмеричную систему Yardik Помощь студентам 1 21.01.2010 08:41
Сложение в двоичной системе счисления Volchara Общие вопросы C/C++ 2 23.04.2009 19:54
перевести числа с одной системы счисления в другую Informer Общие вопросы C/C++ 3 23.11.2007 16:21
Деление чисел в двоичной системе счисления Mss_Smith Помощь студентам 9 04.05.2007 17:02