Programación VB: Encuentra los 10 números posibles cuya suma sea 100 entre los números enteros del 1 al 50
Se ha modificado de la siguiente manera:
El ejemplo dado por el cartel original tiene 33389 grupos.
El siguiente es el procedimiento general:
Opción Explícita
Dim N As Long, Y As Long, X As Long
Dim I como entero, J como entero
Dim M() como largo
Dim St como cadena
Dim H() como doble, Hj como doble p>
Private Sub Form_Load()
Form1.AutoRedraw = True
Do
St = InputBox("Ingrese el rango de búsqueda (N) ", "Entrada", 50)
Bucle hasta Pan(St)
N = Val(St)
Do
St = InputBox ("Ingrese la suma (Y)", "Enter", 100)
Bucle hasta Pan(St)
Y = Val(St)
Do
St = InputBox("El número de números de suma es", "input", 10)
Bucle hasta Pan(St)
X = Val(St)
ReDim M(X), H(X)
Para I = 0 a X
M(I) = I:H ( I) = 0
Siguiente
Hj = 0
I = 1
abre "d:\result.txt" para salida como #1
Llame a ZuHe
Imprimir #1, "Completo. El total es: "; >Imprimir "Completado. El número total es:"; Hj
Imprimir "Todos los resultados se han escrito en el archivo D:\results.txt2 en el directorio raíz de la unidad D"
End Sub
Función Pan(A como cadena) como booleana
Dim L como entero, I como entero
L = Len(A)
Si L lt; gt; 0 Entonces
Para I = 1 a L
Si Asc(Mid(A, I, 1)) lt; Mid(A, I, 1)) gt; 57 Entonces
Pan = False
Salir para
Else
Pan = True
Finalizar si
Siguiente
Else
Pan = False
Finalizar si
Función final
Sub ZuHe()
Hacer mientras M(I) lt;= N - X I
H(I) = H(I - 1 ) M(I)
Si I = X Entonces
Si H(I) = Y Entonces
Hj = Hj 1
Imprimir
#1, Hj;
Para J = 1 a X
Imprimir #1, M(J
Siguiente
Imprimir; #1, vbCrLf
End If
ElseIf H(I) lt; Y Then
I = I 1
M(I ) = M(I - 1) 1
Llamar a ZuHe
I = I - 1
Finalizar si
M(I) = M(I) 1
DoEvents
Bucle
End Sub
'Ya se está ejecutando.