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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2012, 09:11   #1
catchmeifyoucan
Новичок
Джуниор
 
Регистрация: 13.11.2011
Сообщений: 2
Стрелка Уравнение в шестнадцатиричной системе счисления

Напишите программу, позволяющую решить уравнение: ax+b=cx-d, где a, b, c, d, и x - целые шестнадцатеричные числа (a, b, c и d входные данные из диапазона от -FFFFF до FFFFF, а x - выходное значение).
Пример:
a = A
b = B
c = C
d = D
x = C
catchmeifyoucan вне форума Ответить с цитированием
Старый 17.01.2012, 10:09   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

по секрету скажу, в паскале ОЧЕНЬ легко перевести шестнадцатеричное значение в десятичное. (да и обратно тоже не намного сложнее )

поиском по форуму Вы бы легко нашли нужный код перевода.
Ну да ладно. вот, например, полезные в вашем случае функции:
Код:

(*********** функции для перевода из HEX в десятичную СС и из десятичной в HEX *)
const  Digits : array[0..$F] of Char = '0123456789ABCDEF';
type
  Long =
    record
      LowWord, HighWord : Word;
    end;


function StrHexToInt(S :  string; var Err : integer) : Longint;
var
  D    : LongInt;
  i, k : integer;
begin
  D := 0;
  Err := 0;
  i := 1;
  while (i<=Length(S)) and (Err=0) do begin
    k := Pos(Upcase(S[i]), Digits);
    if k=0 then Err := i
    else
      D := D * 16 + (k-1);
    inc(i);
  end;
  StrHexToInt := D;
end;

 
  function HexW(W : Word) : string;
    {-Return hex string for word}
  begin
    HexW[0] := #4;
    HexW[1] := Digits[hi(W) shr 4];
    HexW[2] := Digits[hi(W) and $F];
    HexW[3] := Digits[lo(W) shr 4];
    HexW[4] := Digits[lo(W) and $F];
  end;

  function HexL(L : LongInt) : string;
    {-Return hex string for LongInt}
  begin
    with Long(L) do
      HexL := HexW(HighWord)+HexW(LowWord);
  end;
(*************************************************************)


{ Пример использования }

var
  s : string;
  d : longint;
  err : integer;
begin
  WriteLn;
  Write('Введите число в шестнадцатеричной системе: ');
  ReadLn(s);
  d := StrHexToInt(s, err);
  if err<>0 then WriteLn('Ошибка ввода, число '+s+' не является верной записью шестнад/числа')
  else WriteLn('Десятичное значение числа равно ',d);

  {умножим это число, например, на 3 и результат выведем в шестнадцатеричной системе}
  WriteLn('число, умноженное на 3 равно: ', HexL(d*3));

  readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятов в шестнадцатеричной системе счисления Sinasta Помощь студентам 13 22.10.2013 15:16
Длинная Арифметика в не 10^n системе счисления svloyso Общие вопросы C/C++ 1 15.02.2011 16:05
Сложение, вычитание в двоичной системе счисления Vemor Паскаль, Turbo Pascal, PascalABC.NET 5 16.06.2009 14:02
Сложение в двоичной системе счисления Volchara Общие вопросы C/C++ 2 23.04.2009 19:54
Сложение в 23ичной системе счисления Ямагути Общие вопросы C/C++ 6 04.12.2008 21:21