Редуциране на числа

7 отговора 209 прегледа
#1

Редуциране на числа

Здравейте! Не съм писал досега във форума, тъйкато отскоро се занимавам с Visual Basic.
Сигурно въпроса ми е много тъп, и се решава с един ред, но нямам представа наистина как става.
Та проблема ми е как да редуцирам три-четири или повече цифрено число, като събера числата помежду им. Например имам към променливата var стойността 5643, искам програмата ми автоматично да събере 5+6+4+3, и да направя същото с полученото 18, 1+8 = 9
Дано да сте разбрали какво точно ви питам. Надявам се на малко помощ.

()
Отговор
в отговор на AzoN #2

Re: Редуциране на числа

Най лесно става да превърнеш променливата в стринг, ако не е, после правиш едно цикълче и со готов:

Private Sub NumReduce()
Dim Sum As Integer
Dim Var1 As Variant
Var1 = 123456
Do Until Len(Var1) = 1
For i = 1 To Len(Var1)
Sum = Sum + CInt(Mid(Var1, i, 1))
Next i
Var1 = Sum
Sum = 0
Loop
MsgBox Var1
End Sub

Където 1+2+3+4+5+6=21, после имаш 2+1=3 и съответно излиза кутийка с надпис 3. С този код би трябвало да можеш да редуцираш и безкрайно големи числа до цифра.

Наведи главата защото прелитам ниско с асконата !!!

Редактирано от Ascona83 на

Отговор
в отговор на AzoN #3

Re: Редуциране на числа

Нещо целта на занятието ми убягва, защото ще се получи същото за 1234 и 4321 например.

Function convert(inp)
inp = CStr(inp)
For i = 1 To Len(inp)
out = out + CInt(Mid(inp, i, 1))
Next
convert = out
End Function

После може да викнеш функцията отново с резултата, ако е >9

Отговор
в отговор на AzoN #4

Re: Редуциране на числа

Ето ти го с рекурсия:

Private Sub Command1_Click()


If Not IsNumeric(Text1.Text) Then
MsgBox "Not number!"
Exit Sub
End If

Text1.Text = Recurse(Val(Text1.Text))

End Sub

Private Function Recurse(intNum As Long) As Long

Dim strNum As String, intCount As Long
strNum = Trim(Str(intNum))
intNum = 0

For intCount = 1 To Len(strNum)
intNum = intNum + Val(Mid(strNum, intCount, 1))
Next intCount

If intNum > 9 Then intNum = Recurse(intNum)
Recurse = intNum

End Function


Слагаш един TextBox и един CommandButton, и този код работи.


Щирлиц
Отговор
в отговор на Щиpлиц #5

Re: Редуциране на числа

Що не ви харесва с цикъл в цикъла?

Наведи главата защото прелитам ниско с асконата !!!
Отговор
в отговор на Ascona83 #6

Re: Редуциране на числа

На мен ли не ми харесва???


Щирлиц
Отговор
в отговор на AzoN #7

Re: Редуциране на числа

Благодаря ви много за помощта! Свърши ми работа. :)

()
Отговор
в отговор на AzoN #8

VB.NET

На VB.NET ще изглежда така:


Function ReduceNumbers(ByVal Num As Long) As Long
If Num <> 0 Then
Dim Result As Long = 0
Dim Medium As String = ""
Dim i As Long = 0
Medium = CStr(Num)
Medium.Trim()
For i = 1 To Medium.Length
Result += CLng(Mid(Medium, i, 1))
Next
Return Result
End If
End Function


Отговор