На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Название темы должно быть информативным !
Прежде чем задать вопрос, воспользуйтесь Поиском. и проверьте в FAQ (ЧАВО) Паскаля
Чтобы получить вразумительный ответ, подробно опишите проблему: что надо сделать, что не получается и номер ошибки (если есть), которую выводит компилятор.
Для вставки кода ваших программ используйте, пожалуйста, кнопку СODE=pas или выпадающий список СODE для других языков (подсветка синтаксиса).
[!] Как правильно задавать вопросы | Руководство по языку B.Pascal 7 & Objects/LR | Borland Pascal. Руководство пользователя
Модераторы: volvo877
  
> Как сделать??
    Привет всем!
    Подскажите, как написать процедуры сложения и вычитания двух целых чисел,
    каждое из которых представлено массивом байтов. Первый байт массива
    содержит код знака числа: 0 - '+', 225 - '-', а остальные байты- значащие
    двоичные цифры числа.
    Cпасибо!
      Маразм, однако, но держи!
      Var
      A, B: array [1..32] of Byte;
      X, Y: Longint;
      i: Word;
      { Функция возвращает 0, если длина массива > 32 элементов }
      Function BinArr2Long(Data: array of Byte): Longint;
      Var
      i: Word;
      N: Longint;
      Begin
      If High(Data) > 31 then BinArr2Long := 0
      else
      Begin
      N := 0;
      For i := 1 to High(Data) do
      N := N * 2 + Data[i];
      If Data[0] <> 0 then N := - N
      End;
      BinArr2Long := N
      End;
      Function BinArrAdd(X, Y: array of Byte): Longint;
      Begin
      BinArrAdd := BinArr2Long(X) + BinArr2Long(Y)
      End;
      Function BinArrSub(X, Y: array of Byte): Longint;
      Begin
      BinArrSub := BinArr2Long(X) - BinArr2Long(Y)
      End;
      Begin
      A[1] := 0;
      B[1] := 255;
      For i := 2 to 32 do
      Begin
      A[i] := ( 739021645 shr (32-i)) and 1;
      B[i] := (1407256113 shr (32-i)) and 1
      End;
      X := BinArr2Long(A);
      Y := BinArr2Long(B);
      WriteLn('X = ',X);
      WriteLn('Y = ',Y);
      WriteLn('X+Y = ',BinArrAdd(A, B));
      WriteLn('X-Y = ',BinArrSub(A, B))
      End.
        Cпасибо!
        Правда спасибо, очень было нужно!
          Пожалуйста!
          Правда пожалуйста, очень хотелось помочь! :)
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0186 ]   [ 15 queries used ]   [ Generated: 26.04.24, 03:33 GMT ]