Se cuelga al hacer muchos cálculos
Publicado por Eugenio (5 intervenciones) el 23/05/2001 19:48:01
Hola, he realizado algunas aplicaciones en Visual Basic y cuando se realizan muchas operaciones se queda colgado el programa.
Las definiciones de variables están dentro del intervalo, y me da igual que dure 5 minutos en hacerme una cosa, pero que no se cuelgue.
Me parece que si no puede realizar más de 1 millón de cálculos sin bloquearse, el Visual Basic es un lenguaje no muy optimizado.
Este es un ejemplo, cuando le pongo un intervalo mayor a 800 se cuelga el programa.
--------
Option Explicit
Dim suma1 As Long
Dim suma2 As Long
Dim num1 As Long, num2 As Long
Dim i As Long
Dim j As Long
Dim b As Long
Private Function amigos(x As Integer, y As Integer) As Boolean
Dim k As Long
amigos = False
suma1 = 0
suma2 = 0
For k = 1 To (x - 1)
If x Mod k = 0 Then
suma1 = suma1 + k
End If
Next
For k = 1 To (y - 1)
If y Mod k = 0 Then
suma2 = suma2 + k
End If
Next
If suma1 = j And suma2 = i Then
amigos = True
End If
End Function
Private Sub Command1_Click()
Text3.Text = ""
num1 = Val(Text1.Text)
i = 0
num2 = Val(Text2.Text)
While i < num2
i = i + 1
j = num2 - 1
If amigos(i, j) = True And i <> j Then
Text3.Text = Text3.Text + Str(i) + " y " + Str(j) + vbCrLf
End If
Wend
If Text3.Text = "" Then
Text3.Text = "No hay números amigos"
End If
End Sub
--------
Gracias de antemano
Las definiciones de variables están dentro del intervalo, y me da igual que dure 5 minutos en hacerme una cosa, pero que no se cuelgue.
Me parece que si no puede realizar más de 1 millón de cálculos sin bloquearse, el Visual Basic es un lenguaje no muy optimizado.
Este es un ejemplo, cuando le pongo un intervalo mayor a 800 se cuelga el programa.
--------
Option Explicit
Dim suma1 As Long
Dim suma2 As Long
Dim num1 As Long, num2 As Long
Dim i As Long
Dim j As Long
Dim b As Long
Private Function amigos(x As Integer, y As Integer) As Boolean
Dim k As Long
amigos = False
suma1 = 0
suma2 = 0
For k = 1 To (x - 1)
If x Mod k = 0 Then
suma1 = suma1 + k
End If
Next
For k = 1 To (y - 1)
If y Mod k = 0 Then
suma2 = suma2 + k
End If
Next
If suma1 = j And suma2 = i Then
amigos = True
End If
End Function
Private Sub Command1_Click()
Text3.Text = ""
num1 = Val(Text1.Text)
i = 0
num2 = Val(Text2.Text)
While i < num2
i = i + 1
j = num2 - 1
If amigos(i, j) = True And i <> j Then
Text3.Text = Text3.Text + Str(i) + " y " + Str(j) + vbCrLf
End If
Wend
If Text3.Text = "" Then
Text3.Text = "No hay números amigos"
End If
End Sub
--------
Gracias de antemano
Valora esta pregunta


0