Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [VB6] перевести десятичное число в двоичную,шестн-ую сс, часть программы курсовой.помогите пож 
V
    Опции темы
korizza
  Дата 18.5.2010, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 17.5.2010

Репутация: нет
Всего: нет



Помогите составить часть программы (половина сделана а вот это как делать я не понимаю).
чтобы перевести число из десятичной СС в двоичную нужно десятичное число умножать на 2, а целую часть выносить в ответ до пятой цифры включительно

примеры:

0,36*2 0
0,72*2 0
1,44*2 1
0,88*2 0
1,76*2 1
1,52*2 1
Ответ:0,36=0,01011



0,134*2 0
0,268*2 0
0,536*2 0
1,072*2 1
0,144*2 0
Ответ:0,134=0,00010 
PM MAIL   Вверх
Akina
Дата 18.5.2010, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 17
Всего: 454



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ProgramerForever
  Дата 3.7.2010, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: нет
Всего: 5



Вот что я сделал (может и неправильно, сильно не тестировал):
Код

Const strProduct = "ГишаSoft - Dec2Bin2Hex"
Const NumOfDigits = 10 'Число двоичных знаков после точки

Private Sub dec_Change()
On Error GoTo Err:
Dim N As Double             ' Число из Dec
Dim d As Double

    N = Val(dec.Text)       ' Пытаемся преобразовать текст в число
    If N > 0 Then           ' Если написано нормальное число, то..
            ' BIN
            bin.Text = ""   ' Очищаем текстовое поле bin
            While N         ' Выполняем преобразование целой части
                d = Fix(N) Mod 2
                N = N \ 2
                bin.Text = CStr(d) + bin.Text
            Wend
            N = (Val(dec.Text) - Fix(Val(dec.Text)))    ' Пытаемся получить дробную часть
            If N Then                                   ' Если есть ещё и дробная часть, то..
                bin.Text = bin.Text + "."               ' Печатаем точку
                For i = 1 To NumOfDigits                ' И преобразовываем дробную часть
                    N = N * 2
                    d = CStr(Val(N) \ 1)                ' Получаем целую часть числа
                    bin.Text = bin.Text + CStr(d)
                    If N >= 1 Then N = N - Fix(N)      ' Отбрасываем целую часть
                Next i
            End If
        
            ' HEX
            N = Val(dec.Text)       ' Пытаемся преобразовать текст в число
            hex.Text = ""           ' Очищаем текстовое поле hex
            While N                 ' Выполняем преобразование целой части
                d = Fix(N) Mod 16
                N = N \ 16
                hex.Text = HexDigit(d) + hex.Text
            Wend
            N = (Val(dec.Text) - Fix(Val(dec.Text)))    ' Пытаемся получить дробную часть
            If N Then                                   ' Если есть ещё и дробная часть, то..
                hex.Text = hex.Text + "."               ' Печатаем точку
                For i = 1 To NumOfDigits                ' И преобразовываем дробную часть
                    N = N * 16
                    d = CStr(Val(N) \ 1)                ' Получаем целую часть числа
                    hex.Text = hex.Text + HexDigit(d)
                    If N >= 1 Then N = N - Fix(N)       ' Отбрасываем целую часть
                Next i
            End If
        
        
        Else              ' иначе..
            bin.Text = "N\A"
            hex.Text = "N\A"
    End If
    
Exit Sub
Err:
    bin.Text = "Error!"
    hex.Text = "Error!"
End Sub

Private Sub Form_Load()
    Me.Caption = strProduct ' Строку проекта - в заголовок формы
    dec.Text = "25.28125"
    dec_Change
End Sub

Private Sub Form_Resize()
    ' Изменение размера текстовых полей при изменении размера формы
    dec.Move 0, 0, Me.Width, Me.ScaleHeight \ 3
    bin.Move 0, 1 * (Me.ScaleHeight \ 3), Me.Width, Me.ScaleHeight \ 3
    hex.Move 0, 2 * (Me.ScaleHeight \ 3), Me.Width, Me.ScaleHeight \ 3
End Sub

Function HexDigit(ByVal N As Double) As String
    If N < 10 Then
            HexDigit = CStr(N)
        Else
            Select Case N
                Case 10
                    HexDigit = "A"
                Case 11
                    HexDigit = "B"
                Case 12
                    HexDigit = "C"
                Case 13
                    HexDigit = "D"
                Case 14
                    HexDigit = "E"
                Case 15
                    HexDigit = "F"
            End Select
    End If
End Function

Проект в аттаче.

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  dec_bin_hex.zip 2,36 Kb
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0448 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.