Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 17.11.2018
Сообщений: 28
1

Написать внешний модуль для вычисления результата сложения двух чисел в двоичной системе

17.01.2019, 06:53. Показов 1731. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
2. Написать внешний модуль для вычисления результата сложения двух чисел в двоичной системе. В программе ввести переменные A,B,D,C в двоичном коде. Вычислить c помощью внешнего модуля и вывести на экран результаты сложений: A + B, C + D, A + C, B + D.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2019, 06:53
Ответы с готовыми решениями:

Калькулятор для сложения чисел в двоичной системе
Доброго времени суток!!! Поскольку я новичок, помогите пожалуйста, следует написать программу...

Написать программу для сложения чисел в системе BDC
Помогите написать прогу для сложения чисел в системе BDC Например требуется сложить числа 23 и 45....

Напечатать таблицу умножения и сложения натуральных чисел в двоичной, восьмиричной системе счисления
Составить программу которая печатает таблицу умножения и сложения натуральных чисел в двоичной,...

Написать функцию для сложения двух чисел
... без использования "+" и других арифметических операций. P.S. Кто знает, пожалуйста, не...

2
5084 / 2655 / 2350
Регистрация: 10.12.2014
Сообщений: 10,046
17.01.2019, 09:26 2
Лучший ответ Сообщение было отмечено Kocuka как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses Binary;
  
begin
  WriteLn('Введите бинарные числа (без знаков только из 0 и 1):');
  var A := New tBinary(ReadString('A ='));
  var B := New tBinary(ReadString('B ='));
  var C := New tBinary(ReadString('C ='));
  var D := New tBinary(ReadString('D ='));
  WriteLn('Введённые числа:');
  WriteLn($'A = {A}');
  WriteLn($'B = {B}');
  WriteLn($'C = {C}');
  WriteLn($'D = {D}');
  WriteLn('Сложение чисел:');
  WriteLn($'A + B = {A+B}');
  WriteLn($'C + D = {C+D}');
  WriteLn($'A + C = {A+C}');
  WriteLn($'B + D = {B+D}');
end.
Ну и модуль:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
unit Binary;
 
type
  tBinary = record
    Value : array of Byte;
    
    constructor;
    begin
      SetLength(Value, 1);
    end;
    
    constructor (par : tBinary);
    begin
      Value := Copy(par.Value);
    end;
    
    constructor (par : Integer);
    begin
      var(Length,tmp) := (0,par);
      repeat
        Length += 1;
        tmp := tmp shr 1;
      until tmp=0;
      SetLength(Value, Length);
      for var i := 0 to Length-1 do
        (Value[i],par) := (par and 1,par shr 1);
    end;
    
    constructor (par : String);
    begin
      var p := par.Where(c->c.InRange('0', '1')).Select(c->Byte(Ord(c)-48)).Reverse.ToArray;
      if p.Length = 0 then
        SetLength(Value, 1)
      else
        Value := Copy(p);
    end;
    
    function ToString : String; override;
    begin
      Result := '0'*Value.Length;
      for var i := 0 to Value.Length-1 do
        Result[Value.Length-i] := Chr(48+Value[i]);
    end;
    
    function Print : tBinary;
    begin
      Write(toString);
      Result := New tBinary(Self);
    end;
    
    function PrintLn : tBinary;
    begin
      WriteLn(toString);
      Result := New tBinary(Self);
    end;
 
    function ToInt : Integer;
    begin
      Result := System.Convert.ToInt32(ReverseString(Value.Select(v->v=0?'0':'1').JoinIntoString('')), 2);
    end;
    
    class function operator + (va, vb : tBinary) : tBinary;
    begin
      Result := New tBinary(va.ToInt + vb.ToInt);
    end;
 
    class function operator + (v : tBinary; n : Integer) : tBinary;
    begin
      Result := New tBinary(v.ToInt + n);
    end;
  end;
end.
0
2350 / 1453 / 526
Регистрация: 07.04.2017
Сообщений: 4,782
17.01.2019, 19:00 3
Цитата Сообщение от JuriiMW Посмотреть сообщение
Pascal
1
2
  tBinary = record
    Value : array of Byte;
Для этого есть System.Collections.BitArray.

И ToString вы ужасно медленно реализовали, используйте StringBuilder.

Цитата Сообщение от JuriiMW Посмотреть сообщение
New tBinary(va.ToInt + vb.ToInt);
А это не будет работать если в числе больше 31 бит. Ну и тоже, ужасно медленно.
0
17.01.2019, 19:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2019, 19:00
Помогаю со студенческими работами здесь

PowerPoint: Написать макрос для сложения двух чисел
Ребята, помогите сделать: Написать макрос для сложения двух чисел. На первом слайде ввести числа и...

Сложение двух чисел в двоичной системе счисления
Здравствуйте. Правильно ли я сложил 2 числа в двоичной системе счисления? Руководствовался...

Умножение двух чисел в двоичной системе счисления
Всем доброго времени суток! Мучаю эту программу уже который день, но правильно она складывать...

Сделать сумму двух чисел в двоичной системе
Задано два положительных числа в двоичной системе счисления.Составить программу вычисления суммы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru