伊莉討論區

標題: vb計算階層問題 [打印本頁]

作者: asdf2286313    時間: 2015-4-14 08:23 PM     標題: vb計算階層問題

小的不才 要寫個像下面這樣的東西
[attach]108205398[/attach]
但網上找了資料結果出了問題變這樣
[attach]108205397[/attach]
有大神可以教我怎麼改嗎?ORZ
程式碼如下:
Public Class Form1

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            Dim i As Integer, j As Integer, k As Integer, fact(200) As Integer, n As Integer, txt_fact As String

            n = Val(TextBox1.Text)
            ListBox1.Items.Clear()
            fact(i) = 1
            For j = 2 To 200
                fact(j) = 0
            Next j
            For i = 1 To n
                For j = 1 To 200
                    fact(j) = fact(j) * i
                Next j
                For j = 1 To 200
                    If fact(j) > 9 Then
                        fact(j + 1) = fact(j + 1) + fact(j) \ 10
                        fact(j) = fact(j) Mod 10
                    End If
                Next j
                For j = 200 To 1 Step -1
                    If fact(j) <> 0 Then k = j : Exit For
                Next j
                txt_fact = i.ToString("###") & "!" & "="
                For j = k To 1 Step -1
                    txt_fact = txt_fact + CStr(fact(j))
                Next j
                ListBox1.Items.Add(txt_fact)
            Next i

        End Sub

    End Class




作者: hatakc56923us    時間: 2015-4-14 10:05 PM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: Jeepluo    時間: 2015-4-15 02:01 PM

寫了一陣範例,但沒有機器可以測,你自己試試吧!
  1. dim n as integer = 30 ' 階層
  2. dim m as integer        ' 乘積合
  3. dim d as string = ""    ' 字串集合
  4. for i = 1 to n
  5.    m = 1
  6.    for j = 1 to i
  7.       m *= j
  8.    next j
  9.    d &= i & "! = " & m & vbCrLf
  10. next i
  11. textbox1.text = d
複製代碼

作者: darkjack    時間: 2015-4-15 07:51 PM

最後要用大數喔 因為 數字不夠放 會出現 "E" 喔..
作者: asdf2286313    時間: 2015-4-15 08:07 PM

Jeepluo 發表於 2015-4-15 02:01 PM
寫了一陣範例,但沒有機器可以測,你自己試試吧!

不能用的樣子><
我有稍微改下
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim n As Integer = 30 ' 階層
        Dim m As Single        ' 乘積合
        Dim d As String = ""    ' 字串集合
        For i = 1 To n
            m = 1
            For j = 1 To i
                m = m * j
            Next j
            d &= i & "! = " & m & vbCrLf
        Next i
        TextBox2.Text = d
    End Sub
End Class
結果變這樣[attach]108220421[/attach]
怎辦呢 而且我是顯示到TextBox2
但我想顯示到list box也是這樣用嗎?list box2.Text = d

作者: asdf2286313    時間: 2015-4-15 08:15 PM

darkjack 發表於 2015-4-15 07:51 PM
最後要用大數喔 因為 數字不夠放 會出現 "E" 喔..

真的出現了請問如何修改呢
作者: Jeepluo    時間: 2015-4-16 08:52 PM

應該是變數宣告的問題,m 要用 長整數宣告,如果不知道的話查一下vb 的資料型態

作者: darkjack    時間: 2015-4-16 08:57 PM

給你參考 (加法 跟 乘法)
goo 後面的底線請自己刪除喔
http://goo___.gl/wqd7po
至於 階乘 網路上也有 ....請自己搜尋喔 ^^





歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!