Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 11.06.2019
Сообщений: 1
Excel

Как создать Программа-калькулятор для чисел в двоичной системе счисления

11.06.2019, 10:12. Показов 3413. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа-калькулятор для чисел в двоичной системе счисления
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.06.2019, 10:12
Ответы с готовыми решениями:

Калькулятор для целых чисел в двоичной системе счисления
Создать программу – калькулятор для целых чисел в двоичной системе счисления. Должны быть кнопки + – = На А – одно поле для ввода числа и...

Калькулятор в двоичной системе счисления
не понимаю как можно сделать калькулятор в двоичной сс. вот в десятичной model tiny STACK 256 DATASEG mes1 db '1. Suma',0dh,0ah,'$'...

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

5
 Аватар для Святой НякаЛайк
655 / 247 / 89
Регистрация: 28.10.2015
Сообщений: 526
12.06.2019, 12:45
Цитата Сообщение от fn_clementine Посмотреть сообщение
Как создать
Если речь именно о VBA, выработайте концепцию, откройте редактор кода, создайте переменные, функции, макросы. Если это не для института, то этап "блок-схема" лучше пропустить.
На каком этапе затруднение возникло?

Добавлено через 12 минут
Вот для затравки самый примитивный вариант. Калькуль умеет складывать два числа в двоичной системе, длина каждого не превышает одного знака:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Option Explicit
 
Sub main()
   Dim Sum1$, Sum2$, Itog$
   Sum1 = InputBox("Введите первое двоичное число:")
   Sum2 = InputBox("Введите второе двоичное число:")
   If Sum1 = "0" And Sum2 = "0" Then Itog = "0"
   If Sum1 = "0" And Sum2 = "1" Then Itog = "1"
   If Sum1 = "1" And Sum2 = "0" Then Itog = "1"
   If Sum1 = "1" And Sum2 = "1" Then Itog = "10"
   MsgBox Itog
End Sub
В целом, по такому принципу можно и написать долгую "простыню кода" и заставить калькуль делать всё, что требуется. Но если сильно надо, имеет смысл содеять более универсальное решение...
1
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
12.06.2019, 15:50
fn_clementine, создать форму, на которой будут только два числа (0, 1) и знаки арифметики. Если речь идет о целочисленной арифметике, то можно воспользоваться функциями листа - перевести двоичные числа в десятичные (WorksheetFunction.Bin2Dec), выполнить действия с десятичными (деление тоже выдаст только целую часть), а затем результат преобразовать в двоичную (WorksheetFunction.Dec2Bin)
1
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
13.06.2019, 03:53
На снимке сложение 2 + 3 в двоичном виде



И результат =5



Этот код будет работать в office 2007 и выше
Кликните здесь для просмотра всего текста
Visual Basic
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
Option Explicit
 
 
Dim tx As MSForms.TextBox, WithEvents cb As MSForms.CommandButton, OnMode&
 
Private Sub cb_Click()
    Static s$, a$()
    Select Case Mid$(cb.Name, 3)
    Case 2 To 5
        If s = "" Then s = cb.Caption: tx.Text = tx.Text & s
    Case 6
        a = Split(tx.Text, s)
        If UBound(a) = 0 Then tx.Text = a(0): s = "": Exit Sub
        If UBound(a) = 1 Then If a(1) = "" Then tx.Text = a(0): s = "": Exit Sub
        tx.Text = WorksheetFunction.Dec2Bin(Application.Evaluate(WorksheetFunction.Bin2Dec(a(0)) & s & WorksheetFunction.Bin2Dec(a(1)))): s = ""
    Case 7:  s = "": tx.Tag = ""
        tx.Text = 0
    Case Else
        With tx
            If .Tag = "" Then .Tag = 1: tx.Text = cb.Caption Else tx.Text = tx.Text & cb.Caption
        End With
    End Select
End Sub
 
Private Sub UserForm_Activate()
    On Error Resume Next
    While OnMode
        DoEvents
        Set tx = ActiveControl
        Set cb = ActiveControl
    Wend
End Sub
 
Private Sub UserForm_Initialize()
    Const rr = 22: Dim i&, v
    Set tx = Controls.Add("Forms.TextBox.1", "tx", 1): With tx
        .Width = rr * 8
        .Locked = 1
        .Text = 0
    End With
 
    For Each v In Split("0 1 + - * / = <")
        With Controls.Add("Forms.CommandButton.1", "cb" & i, 1)
            .Move i * rr, rr, rr, rr
            .Caption = v
            .SetFocus
        End With
        i = i + 1
    Next
    Caption = "Двоичный калькулятор"
    Move Left, Top, rr * 9, rr * 4
    OnMode = 1
End Sub
 
Private Sub cb_DblClick(ByVal Cancel As MSForms.ReturnBoolean): cb_Click: End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer): OnMode = 0: End Sub


Достаточно создать форму и закинуть в ее модуль этот код
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
13.06.2019, 06:15
Немного улучшил и сделал универсальным для всех версий
то есть в обход функций Bin2Dec и Dec2Bin

Сложение 2 + 3




Ответ




Visual Basic
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
73
74
75
76
77
78
79
80
Option Explicit
 
 
Dim tx As MSForms.TextBox, WithEvents cb As MSForms.CommandButton, OnMode&
 
 
Private Sub cb_Click()
    Static s$, a$(), i&, j&
    Select Case Mid$(cb.Name, 3)
    Case 2 To 5
        If tx.Tag = "" Then tx.Tag = 1
        If s = "" Then s = cb.Caption: tx.Text = tx.Text & s
    Case 6
        a = Split(tx.Text, s)
        If UBound(a) = 0 Then tx.Text = a(0): s = "": Exit Sub
        If UBound(a) = 1 Then If a(1) = "" Then tx.Text = a(0): s = "": Exit Sub
        '
        '----------------------------Варианты реализации кода
        '
        'Office 2007 и выше
        'tx.Text = WorksheetFunction.Dec2Bin(Application.Evaluate(WorksheetFunction.Bin2Dec(a(0)) & s & WorksheetFunction.Bin2Dec(a(1))))
        '
        '
        'Office 2003 и выше
        ReDim Preserve a(3): a(2) = 0: a(3) = 0
        
        'Получаю 2 десятичных
        For i = 0 To 1: For j = 1 To Len(a(i)): a(i + 2) = a(i + 2) * 2 + Mid$(a(i), j, 1): Next j, i
        
        'Получаю 10-й результат вычисления
        j = Application.Evaluate(a(2) & s & a(3)): s = Space(32)
        
        'Перевожу результат обратно в 2-чный вид
        For i = 32 To 1 Step -1: Mid$(s, i, 1) = j Mod 2: j = j \ 2: Do While j = 0: Exit For: Exit Do: Loop: Next
            
        'На табло
        tx.Text = LTrim(s): s = ""
        '
        '
        '
    Case 7:  s = "": tx.Tag = "": tx.Text = 0
    Case Else
        With tx
            If .Tag = "" Then .Tag = 1: tx.Text = cb.Caption Else tx.Text = tx.Text & cb.Caption
        End With
    End Select
End Sub
 
Private Sub UserForm_Activate()
    On Error Resume Next
    While OnMode
        DoEvents
        Set tx = ActiveControl
        Set cb = ActiveControl
    Wend
End Sub
 
Private Sub UserForm_Initialize()
    Const rr = 21: Dim i&, v
 
    For Each v In Split("0 1 + - * / = <")
        With Controls.Add("Forms.CommandButton.1", "cb" & i, 1)
            .Move i * rr + 7, rr + 7, rr, rr
            .Caption = v
        End With
        i = i + 1
    Next
    Set tx = Controls.Add("Forms.TextBox.1", "tx", 1): With tx
        .Move 7, 7, rr * i
        .Locked = 1
        .Text = 0
    End With
    
    Caption = "Двоичный калькулятор"
    Move Left, Top, rr * (i + 1), rr * 4
    OnMode = 1
End Sub
 
Private Sub cb_DblClick(ByVal Cancel As MSForms.ReturnBoolean): cb_Click: End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer): OnMode = 0: End Sub
3
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
13.06.2019, 06:28
Лист забыл вложить
Вложения
Тип файла: xls Calc2Binl.xls (47.0 Кб, 32 просмотров)
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.06.2019, 06:28
Помогаю со студенческими работами здесь

Создать класс для работы с натуральными числами в двоичной системе счисления С++
Создать класс и предусмотреть методы такие как сочитания(+), разница(-), умножение(*), перевод с натурального в двоичное число и наоборот,...

Создать функцию для вывода на экран целого числа в двоичной системе счисления с применением побитовых операций.
Создать функцию для вывода на экран целого числа в двоичной системе счисления с применением побитовых операций. Использовать функцию при...

Если строка является изображением целого числа в восьмеричной системе счисления, то перевести ее в целое число в двоичной системе счисления
Вводится строка символов. Если она является изображением целого числа в восьмеричной системе счисления, то перевести ее в целое число в...

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

Сложение чисел в двоичной системе счисления
Напишите программу, реализующую сложение чисел в двоичной системе счисления с использованием контроля по модулю. Вопрос. что значит...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru