Vistas de página en total

354,520

martes, 7 de octubre de 2014

FACTOREO DE NUMEROS ENTEROS HASTA 10 CIFRAS -For Jorge Lorenzi - Si tenes Visual Basic 6 (VB6) instalado y sos programador te presento aqui abajo el codigo a pegar y como diseñar el formulario - que te sea de utilidad - jorgelectro




' FACTOREO DE NUMEROS ENTEROS HASTA 10 CIFRAS -For Jorge Lorenzi *E-mail jorgelectro@hotmail.com

'para ejecutar este programa colocar en un formulario un <Textbox> , asi mismo en <Herramientas
'Editor de menus > poner:<Caption: Ingresar Número ; Name:ingresonumero >; <Caption:FACTOREAR ;
'Name: factoreo> ;<Caption:SALIR ;Name: salgo> . Además pegar este código

Private Sub factoreo_Click()
Dim FACT(200) As Double, Exp(200) As Integer
On Error GoTo errormensaje

' empezamos reseteando los " acumuladores " poniéndolos en condiciones
' de recibir los resultados del factoreo del número ingresado para ello

Form1.Cls: For A = 1 To 200: Exp(A) = 0: FACT(A) = 0: Next A
N = 1

numero = Val(Text1.Text)

If numero > 9999999999# Then
Text1.Text = "ojo hasta 10 cifras"
GoTo errormensaje
End If

If numero <> Text1.Text Then GoTo errormensaje2

' En el siguiente <For/Next> se va incrementando el contenido de <divisor> de a un entero
' por "loop" a partir de <2> . Esos valores pueden ser números primos o nó y entonces
' "divisor" va a incluir sucesivamente a la familia de factores primos existentes en el
' universo de los números enteros. Por ello lo que sigue separa "la paja del trigo" o sea
' se van guardando en FACT(N) , sólamente los que sean factores primos del número
' a descomponer , y además ..¡..ojo..! calcula cuantas veces divide exactamente a lo
' que va quedando como cociente de dividir , con lo que determina su <exponente>

For divisor = 2 To 100000000
If divisor > 2 And divisor Mod 2 = 0 Then GoTo SIGUIENTE ') no se consideran los valores que
If divisor > 3 And divisor Mod 3 = 0 Then GoTo SIGUIENTE ') contenga <divisor> que sean
If divisor > 5 And divisor Mod 5 = 0 Then GoTo SIGUIENTE ') múltiplos de factores primos
If divisor > 7 And divisor Mod 7 = 0 Then GoTo SIGUIENTE ') ya obtenidos en este <For/Next>
If divisor > 7 And divisor > numero / 7 Then ')
FACT(N) = numero: Exp(N) = 1: GoTo SALIR
End If
If divisor > 325777 And divisor > numero / 325777 Then
FACT(N) = numero: Exp(N) = 1: GoTo SALIR
End If
FACT(N) = divisor

' entre " VUELTA: " y " End if " se calcula a continuación el exponente de cada factor
' primo obtenido antes y acumulándolo en " EXP(N) "

VUELTA:
cociente = numero / divisor
If Int(cociente) = cociente Then
numero = numero / divisor
Exp(N) = Exp(N) + 1
GoTo VUELTA
End If
' aquí ya tenemos el factor primo y su exponente guardados en " FACT(N) " y " EXP(N) "
' correspondiente al presente "loop" de este " FOR/NEXT "
If numero < divisor Then GoTo SALIR
If Exp(N) > 0 Then N = N + 1
SIGUIENTE:
Next divisor
'en este punto se acabó la descomposición en factores primos y pasamos a mostrar
'en el formulario " Form1 " el resultado final

SALIR:
Form1.ForeColor = 255
Form1.CurrentY = 700
Text1.Visible = False

Print "resultado del factoreo del número : "; Val(Text1.Text)
Form1.Print
For NN = 1 To 200
If Exp(NN) > 0 Then
Form1.Print "Factor : "; FACT(NN);
Form1.CurrentX = 4000
Form1.Print "Exponente : "; Exp(NN)
End If
Next NN
GoTo seguir
errormensaje:
MsgBox "Error: INGRESAR NUMERO HASTA 10 CIFRAS SIN SIGNOS DE PUNTUACION"
Text1.Text = ""
Text1.Visible = True
GoTo seguir
errormensaje2:
MsgBox "Error: ERROR HAS INGRESADO CARACTERES NO NUMERICOS"
Text1.Text = ""
Text1.Visible = True

' " seguir: " significa que si queremos podemos solicitar el ingreso y fatoreo de otro
' número entero , o corregir un error al ingresarlo
seguir:
End Sub

Private Sub Form_Load()
Text1.Visible = False

With Text1
.BackColor = &H80FFFF
.Left = 400
.Top = 200
.Height = 300
.Width = 3000
End With


End Sub

Private Sub ingresonumero_Click()
Form1.Cls
Text1.Text = ""
Text1.Visible = True

End Sub


Private Sub SALGO_Click()
End
End Sub

No hay comentarios:

Publicar un comentario