Programación General > Visual Basic 6.0 e inferiores
Cadena De Caracteres Ayudaaa
(1/1)
damito666:
Hola necesito alguna idea u ayuda con esto que me esta poniendo loco!.
En un TextBox ingreso 5 numeros, por ejemplo el 25313; necesito sumar todas las cifras de ese numero 2+5+3+1+3 y al resultado de ese numero (14) tengo que tambien sumarle las cifra osea 1+4, quedando una sola cifra 5.
Pueden darme alguna idea de como hacer eso.. POR FAVOR. Desde ya MUCHAS GRACIAS
cpmario:
Te hice la tarea:
--- Código: Text ---Private Sub Command1_Click() Dim inctCnt As Integer Dim intSumaToTal As Integer Dim strTemp As String For inctCnt = 1 To Len(Text1.Text) intSumaToTal = intSumaToTal + Mid$(Text1.Text, inctCnt, 1) Next inctCnt strTemp = Trim(Str(intSumaToTal)) intSumaToTal = 0 For inctCnt = 1 To Len(strTemp) intSumaToTal = intSumaToTal + Mid$(strTemp, inctCnt, 1) Next inctCnt Text2.Text = intSumaToTalEnd Sub
:devil: :comp:
Alpha_:
--- Código: Text ---Private Sub Command1_Click() Dim inctCnt As Integer Dim intSumaToTal As Integer Dim strTemp As String For inctCnt = 1 To Len(Text1.Text) intSumaToTal = intSumaToTal + Mid$(Text1.Text, inctCnt, 1) Next inctCnt strTemp = Trim(Str(intSumaToTal)) intSumaToTal = 0 For inctCnt = 1 To Len(strTemp) intSumaToTal = intSumaToTal + Mid$(strTemp, inctCnt, 1) Next inctCnt Text2.Text = intSumaToTalEnd Sub
Funciona bien este código, pero solamente si el primer resultado da un número de 2 o 1 cifra.. pero si diera mayor (cosa difìcil, pero posible al fin y al cabo).
[code]Private Sub Command1_Click()
Dim Contador As Integer
Dim Suma As Integer
Dim Cadena As String
Cadena = Text1.Text
While (Len(Cadena) > 1)
Suma = 0
For Contador = 1 To Len(Cadena)
Suma = Suma + Mid$(Cadena, Contador, 1)
Next Contador
Cadena = Suma
Wend
Text1.Text = Cadena
[code]
Creo haberlo escrito bien.. hace muchísimo que no hago nada en VB. Saludos.
cpmario:
Te equivocas en cuanto a que el código que coloqué
--- Código: Text ---Private Sub Command1_Click() Dim inctCnt As Integer Dim intSumaToTal As Integer Dim strTemp As String For inctCnt = 1 To Len(Text1.Text) intSumaToTal = intSumaToTal + Mid$(Text1.Text, inctCnt, 1) Next inctCnt strTemp = Trim(Str(intSumaToTal)) intSumaToTal = 0 For inctCnt = 1 To Len(strTemp) intSumaToTal = intSumaToTal + Mid$(strTemp, inctCnt, 1) Next inctCnt Text2.Text = intSumaToTalEnd Sub
Funciona con cualquier resultado que se tenga en la primer suma. No importa el número de cifras que se obtengan en el primer resultado.
Esta en la línea que hace ese trabajo.
--- Código: Text ---For inctCnt = 1 To Len(strTemp)
Lo bueno es que las dos rutinas funcionan.
:comp:
DiabloRojo:
Hola.
Me llamó la atención tanto la pregunta como las respuestas de este hilo. Así que me puse a probar y esto fue lo que salió:
--- Código: Text --- Private Function CalcularDigito(num As String) As String Dim VarTemp As String Dim i As Integer ' DoEvents If (Not (IsNumeric(num))) Then Err.Raise 1001, , "Argumento no válido. La función sólo acepta valores numéricos." Exit Function End If ' If (Len(num) = 1) Then CalcularDigito = num Else VarTemp = 0 For i = 1 To Len(num) VarTemp = Trim(Str(Val(VarTemp) + Val(Mid(num, i, 1)))) Next CalcularDigito = CalcularDigito(VarTemp) End IfEnd Function
Como vez es una función recursiva (se llama a sí misma) y como resultado devuelve un único dígito. No sé si era eso lo que buscabas...
Saludos.
DiabloRojo.
Navegación
Ir a la versión completa