Ingresar un número distinto de cero. Calcular su factorial. Nota: factorial de 5 = 5 x 4 x 3 x 2 x 1 = 120 :huh:
Y el código que tienes hasta ahora es.... ?
PD: Te informo que aquí no hacen tareas. :)
si sabes hacer un for.
solo tienes que multiplicar el valor en cada repetición del for con el anterior.
este es el codigo k tengo pero esta mal... y no c kmo hacer para k me aparezca eso...
Dim num As Integer
Dim fact As Integer
Private Sub Command1_Click()
Text1.Text = ""
Text2.Text = ""
Text1.Text.SetFocus
End Sub
Private Sub Command2_Click()
fact = 1
num = Text1.Text
While num <> 0
fact = fact * num
num = num - 1
Wend
Text2.Text = fact
Me.Text1.Enabled = False
Me.Text2.Enabled = False
End Sub
Private Sub Command3_Click()
End
End Sub
Puedes hacer algo tan simple como esto.
Dim i As Integer
Dim x As Integer
Dim n As Integer
x = 1
n = 5
If n <> 0 Then
For i = 1 To n
x = x * i
Next
End If
MsgBox x
gracias
Obviamente no funciona para números negativos. :) tienes que retocarlo. :laugh:
Tambien puedes hacer una función que se encargue de calcular el factorial de un numero cualquiera.
En este ejemplo está definida en forma recursiva:
Function Factorial (n as long) as long
if n = 1 then
Factorial = 1
else
Factorial = n * Factorial(n-1)
end if
end function
Private Sub Command1_Click()
Text1.Text = ""
Text2.Text = ""
Text1.Text.SetFocus
End Sub
Private Sub Command2_Click()
'fact = 1
'num = Text1.Text
'While num <> 0
' fact = fact * num
' num = num - 1
'Wend
'Text2.Text = fact
if isnumeric(Text1.Text) then
Text2.Text = Factorial(clng(Text1.Text)) 'si Text1 no tiene un numero, se generará un error, por eso usamos isnumeric antes
Me.Text1.Enabled = False
Me.Text2.Enabled = False
else
msgbox "Ingrese un numero!"
text1.setfocus
endif
End Sub
Private Sub Command3_Click()
End
End Sub
@MCKSys Argentina
o simplemente aplicar valor absoluto a n. ya que es igual 3*2*1 que -3*-2*-1.
Dim i As Integer
Dim x As Integer
Dim n As Integer
x = 1
n = -5
If n <> 0 Then
For i = 1 To Abs(n)
x = x * i
Next
End If
saludos
Cita de: Danyfirex en 28 Enero 2013, 23:18 PM
@MCKSys Argentina
o simplemente aplicar valor absoluto a n. ya que es igual 3*2*1 que -3*-2*-1.
Claro.
Mi idea no era corregir (ni nada por el estilo), sino mostrar un poco de programacion modular basica. ;)
Cita de: MCKSys Argentina en 28 Enero 2013, 23:25 PM
Claro.
Mi idea no era corregir (ni nada por el estilo), sino mostrar un poco de programacion modular basica. ;)
Si seguro. Aunque te pinta mejor lo avanzado ;)
saludos Capo.
3*2*1 != -3*-2*-1
6 != -6
Pero la solucion es tan facil como poner (-n)! = n! * (-1)^n aunque en realidad segun la definicion el factorial de un numero negativo no es posible.
Cita de: $Edu$ en 28 Enero 2013, 23:46 PM
3*2*1 != -3*-2*-1
6 != -6
Pero la solucion es tan facil como poner (-n)! = n! * (-1)^n aunque en realidad segun la definicion el factorial de un numero negativo no es posible.
ups quise decir igual a 3*2*1 = ABS(-3*-2*-1)
y si no se puede de negativos sera mientras sea >0.
saludos gracias por la corrección.