Vb 6. перевод чисел из 10й системы счисления

Тема в разделе "Visual Basic", создана пользователем ZaRaZ, 25 ноя 2007.

Статус темы:
Закрыта.
  1. ZaRaZ

    ZaRaZ Гость

    задача! перевести число из 10й системы счисления в систему с указанным основанием (2-35). если СС > 10 то цифры зыменять на буквы. 10 = A, 11= B, ..., 17 = G и т.д.
    Код (Text):
    Private Sub Command1_Click()

    a = Text1.Text
    b = Text2.Text
    a1 = Len(a)
    For i = 1 To a1
    a2 = Mid(a, i, 1)
    If a2 = "." Then q = i
    Next
    l4act = Val(Left(a, q - 1))
    p4act = Right(a, a1 - q)

    x = l4act
    Do
    X1 = x \ b
    y = x - X1 * b
    y = Str(y)
    If y = "10" Then y = "A"
    If y = "11" Then y = "B"
    If y = "12" Then y = "C"
    If y = "13" Then y = "D"
    If y = "14" Then y = "E"
    If y = "15" Then y = "F"
    If y = "16" Then y = "G"
    If y = "17" Then y = "H"
    If y = "18" Then y = "I"
    If y = "19" Then y = "J"
    If y = "20" Then y = "K"
    If y = "21" Then y = "L"
    If y = "22" Then y = "M"
    If y = "23" Then y = "N"
    If y = "24" Then y = "O"
    If y = "25" Then y = "P"
    If y = "26" Then y = "Q"
    If y = "27" Then y = "R"
    If y = "28" Then y = "S"
    If y = "29" Then y = "T"
    If y = "30" Then y = "U"
    If y = "31" Then y = "V"
    If y = "32" Then y = "W"
    If y = "33" Then y = "X"
    If y = "34" Then y = "Y"

    x = X1
    Y2 = y + Y2
    y = Val(y)
    Loop While x <> 0
    Print

    Print Y2;
    l = Len(p4act)
    p24 = Val(p4act)
    For k = 1 To l
    qw = p24 * b
    v = Fix(qw)
    v1 = Str(v)
    If v1 = "10" Then v = "A"
    If v1 = "11" Then v1 = "B"
    If v1 = "12" Then v1 = "C"
    If v1 = "13" Then v1 = "D"
    If v1 = "14" Then v1 = "E"
    If v1 = "15" Then v1 = "F"
    If v1 = "16" Then v1 = "G"
    If v1 = "17" Then v1 = "H"
    If v1 = "18" Then v1 = "I"
    If v1 = "19" Then v1 = "J"
    If v1 = "20" Then v1 = "K"
    If v1 = "21" Then v1 = "L"
    If v1 = "22" Then v1 = "M"
    If v1 = "23" Then v1 = "N"
    If v1 = "24" Then v1 = "O"
    If v1 = "25" Then v1 = "P"
    If v1 = "26" Then v1 = "Q"
    If v1 = "27" Then v1 = "R"
    If v1 = "28" Then v1 = "S"
    If v1 = "29" Then v1 = "T"
    If v1 = "30" Then v1 = "U"
    If v1 = "31" Then v1 = "V"
    If v1 = "32" Then v1 = "W"
    If v1 = "33" Then v1 = "X"
    If v1 = "34" Then v1 = "Y"
    pch2 = pch2 + v1
    p24 = (p24 * b) - v1
    Next
    If pch2 = "0" Then pch2 = ""
    gch = Y2 + "." + pch2
    Print
    Print gch

    End Sub
    вот что я набрасал. но эта прога не работает с СС >10. подкоректируйте пожалста.
    и еще как HScroll запрограммировать чтобы при нажатии стрелочки цифирки увеличивались или уменьшались
     
  2. WeBsteR

    WeBsteR Гость

    Перевод из одной системы счисления в другую производится с помощью деления числа на основание до тех пор, пока целое число от деления не станет равным 0, остатки от деления запоминаются, и затем выводятся в обратном порядке. Пример:
    Было число 143 в десятичной системе, нужно перевести в 16.
    Делим 143 на 16. Целое число после деления: 8, остаток: 15(F).
    Далее делим 8 на 16. Целое число от деления: 0, остаток 8.
    А теперь выводим остатки в обратном порядке: 8F
    Вот я примерно набросал код для перевода из системы в систему:
    Код (Text):
    Private Sub Command1_Click()
    Dim s As String
    Dim a, cc, b
    a = Text1.Text 'исходное число в 10-ой системе
    cc = Text2.Text 'основание
    Do
    b = a Mod cc
    a = a \ cc
    If b >= 10 Then
    s = s & Chr(b + 55) 'в таблице символов символы A - Z имеют номера 65 - 90
    Else
    s = s & b 'Запоминаем остаток от деления на основание
    End If
    Loop Until a = 0
    Text3.Text = StrReverse(s) 'выводим полученное число в обратном порядке
    End Sub
     
  3. ZaRaZ

    ZaRaZ Гость

    вовремя решение написал! седня последний день сдачи был! :lol:
    одминам - тему delete
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей