Visual Basic

Iniciado por XVICT0RX, 28 Enero 2013, 22:18 PM

0 Miembros y 1 Visitante están viendo este tema.

XVICT0RX

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:

MCKSys Argentina

Y el código que tienes hasta ahora es.... ?

PD: Te informo que aquí no hacen tareas.  :)
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Danyfirex

si sabes hacer un for.


solo tienes que multiplicar el valor en cada repetición del for con el anterior.


XVICT0RX

#3
este es el codigo k tengo pero esta mal... y no c kmo hacer para k me aparezca eso...
Código (vb) [Seleccionar]

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

Danyfirex

Puedes hacer algo tan simple como esto.

Código (vb) [Seleccionar]
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

XVICT0RX


Danyfirex

Obviamente no funciona para números negativos. :) tienes que retocarlo.  :laugh:

MCKSys Argentina

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:

Código (vb) [Seleccionar]

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

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Danyfirex

@MCKSys Argentina

o simplemente aplicar valor absoluto a n. ya que  es igual 3*2*1 que -3*-2*-1.

Código (vb) [Seleccionar]
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

MCKSys Argentina

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.  ;)
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."