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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2011, 18:10   #1
Night Wolf92
Новичок
Джуниор
 
Регистрация: 30.04.2011
Сообщений: 1
По умолчанию Калькулятор для перевода из 10-ой в 2-ую с/сч

Помогите пожалуйста сделать калькулятор для перевода из 10-ой в 2-ую с/сч в VBA.
Night Wolf92 вне форума Ответить с цитированием
Старый 30.04.2011, 19:31   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Готовая функция, ищется в Гугле за минуту:
Код:
Private Function CBin(Number As Integer) As String
Dim Temp As Variant
Temp = 1 'Can't fouble nothing
Do Until Temp > Number 'sets starting point for Len
    Temp = Temp * 2
Loop
Do Until Temp < 1
    If Number >= Temp Then
       CBin = CBin + "1"
       Number = Number - Temp
    Else
        CBin = CBin + "0"
    End If
    Temp = Temp / 2
Loop 'Loop until string is complete
CBin = CStr(Val(CBin))
End Function
Осталось проверить
motorway вне форума Ответить с цитированием
Старый 30.04.2011, 19:31   #3
MCH
Форумчанин
 
Регистрация: 21.11.2010
Сообщений: 326
По умолчанию

Код:
Function dec2bin(dec As Long) As String
Do
    dec2bin = dec Mod 2 & dec2bin
    dec = dec \ 2
Loop While dec > 0
End Function
MCH вне форума Ответить с цитированием
Старый 30.04.2011, 20:56   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Function D2B(d As Long) As String
  If d > 0 Then D2B = D2B(d \ 2) & d Mod 2 else D2B = ""
End Function
если Вас рекурсии не смущают)
старшие разряды принято слева писать:
dec2bin = dec2bin & dec Mod 2
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 30.04.2011 в 21:07.
IgorGO вне форума Ответить с цитированием
Старый 30.04.2011, 22:10   #5
MCH
Форумчанин
 
Регистрация: 21.11.2010
Сообщений: 326
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
старшие разряды принято слева писать:
dec2bin = dec2bin & dec Mod 2
Игорь, это адресовонно мне?
Так у меня в функции они (старшие разряды) добавляются слева, см. вложение.

PS: на мой взгляд рукурсии съедают значительно больше памяти чем простой цикл do loop, хотя для данного примера это не принципиально.
Вложения
Тип файла: rar Dec2Bin.rar (5.8 Кб, 4 просмотров)
MCH вне форума Ответить с цитированием
Старый 30.04.2011, 22:40   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

)))
писал тебе, не проверяя (оказалось - напрасно не проверил). извини, забираю свои слова взад.
вот так номер:
это
D2B = D2B(d \ 2) & d Mod 2
и это
dec2bin = dec Mod 2 & dec2bin

дают одинаковый результат???
визуально строка нулей-единиц накапливается с разных сторон, а результат одинаковый... мистика...
это НочномуВолку задание на дом.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 30.04.2011 в 22:43.
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
калькулятор перевода из 16 в 10 систему в С++ tima39 Общие вопросы C/C++ 1 19.04.2011 20:13
Требуется программист для перевода. Killy Фриланс 6 21.10.2010 16:42
Есть ли прога для перевода Кода Pascal в C++ Денис999 Помощь студентам 10 26.05.2010 23:00
программа для перевода из инфиксной формы записи в постфиксную Diana888 Помощь студентам 0 01.10.2009 23:15
Программа для перевода из 16-ной с/c в 2-ную fult Паскаль, Turbo Pascal, PascalABC.NET 0 05.05.2009 21:57