
29/11/2004, 16:38
|
| | Fecha de Ingreso: noviembre-2004 Ubicación: Corrientes, Arg.
Mensajes: 129
Antigüedad: 20 años, 3 meses Puntos: 0 | |
Bueno Kenshin, ahí va un código, pero tengo dos observaciones que hacerte:
1. Las dos tiras de números que nos das tienen distinta longitud, así que le inventé un 0 al principio de la segunda para que las dos tengan 30.
2. Tenés que tratar de trabajar un poquito más vos mismo.
Este código va en un Form cuyo único control es una Label1
Dim Suma As Integer
Dim Resto As Integer
Dim N As Integer
Dim CadRecib As String
Dim CadValor As String
Dim C1 As Integer
Dim C2 As Integer
_______________________________________________
Private Sub Form_Load()
CadRecib = "012199712046400105090001114804"
CadValor = "065432765432765432735432765432"
Suma = 0
For N = 1 To 30
C1 = Val(Mid(CadRecib, N, 1))
C2 = Val(Mid(CadValor, N, 1))
Suma = Suma + C1 * C2
Next N
Resto = Suma Mod 11
If Resto > 9 Then Resto = Resto - 10
Label1.Caption = Str(Resto)
End Sub
Mod es una función de VB que devuelve el resto de una división.
Cuando la ejecuto da 1 en el label, no 4. Así que la cifra faltante seguramente no es el 0 que yo puse. Y al final comparo con >9 porque si es 10 ya no es un dígito sino 2.
Suerte. |