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

  • Автор темы ZaRaZ
  • Дата начала
Статус
Закрыто для дальнейших ответов.
Z

ZaRaZ

Гость
#1
задача! перевести число из 10й системы счисления в систему с указанным основанием (2-35). если СС > 10 то цифры зыменять на буквы. 10 = A, 11= B, ..., 17 = G и т.д.
Код:
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 запрограммировать чтобы при нажатии стрелочки цифирки увеличивались или уменьшались
 
W

WeBsteR

Гость
#2
Перевод из одной системы счисления в другую производится с помощью деления числа на основание до тех пор, пока целое число от деления не станет равным 0, остатки от деления запоминаются, и затем выводятся в обратном порядке. Пример:
Было число 143 в десятичной системе, нужно перевести в 16.
Делим 143 на 16. Целое число после деления: 8, остаток: 15(F).
Далее делим 8 на 16. Целое число от деления: 0, остаток 8.
А теперь выводим остатки в обратном порядке: 8F
Вот я примерно набросал код для перевода из системы в систему:
Код:
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
 
Z

ZaRaZ

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