PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   疑難雜症區 (https://www.pcdvd.com.tw/forumdisplay.php?f=34)
-   -   請教學過VB6的前輩... (https://www.pcdvd.com.tw/showthread.php?t=157011)

涉寒 2002-12-02 11:08 AM

請教學過VB6的前輩...
 
這是一個檢查質數的程式,已經查過輸了,但有些地方不甚明瞭,麻煩前輩指點迷津,謝謝!

Private Function abc(ByVal Number As Integer) As Byte
'1 = 是質數
'2 = 不是質數
'3 = 輸入錯誤
Dim a As Integer
(a代表的是什麼???)
Dim b As Integer
(為何要宣告b???程式碼內完全沒有提到b...)
If Number <= 1 Then
abc = 3
(上面這小段程式碼麻煩解說,謝謝)
Exit Function
End If
If Number = 2 Then abc = 1
Number = Fix(Number)
(為何要加上"Fix(Number)"???不加上去會有什麼差異???)
For a = 2 To Number - 1
(2 To Number - 1這一段不懂???)
If Number Mod a = 0 Then
(Mod的意義是什麼???)
abc = 2
Exit Function
End If
Next a
abc = 1
End Function

chihkuo 2002-12-02 11:31 AM

那程式只是其中一部分吧
 
那個function寫的不夠"獨立"
它還會去call其它的function吧!
另外主程式部分你沒有帶出來,要看問題點實在有點困難

另請問你認為你的vb功力到如何程度?
那本書是那一本書?

(a代表的是什麼???)
是這個function要用的一個內部變數

(為何要宣告b???程式碼內完全沒有提到b...)
不是程式不夠完整,就是編輯人員弄錯了,要不就是作者功力...

(上面這小段程式碼麻煩解說,謝謝)
abc是function名,abc=就是這個function會傳回的值

(為何要加上"Fix(Number)"???不加上去會有什麼差異???)
不是程式不夠完整,就是編輯人員弄錯了,要不就是作者功力...

(2 To Number - 1這一段不懂???)
迴圈

(Mod的意義是什麼???)
"前面數字"除以"後面數字"後的"餘數"

stariloveyou 2002-12-02 06:53 PM

這是一個檢查質數的程式,已經查過輸了,但有些地方不甚明瞭,麻煩前輩指點迷津,謝謝!

Private Function abc(ByVal Number As Integer) As Byte
'1 = 是質數
'2 = 不是質數
'3 = 輸入錯誤
Dim a As Integer
(a代表的是什麼???)


/*宣告 a 是一個整數 這個整數 可代表 0~65535*/


Dim b As Integer
(為何要宣告b???程式碼內完全沒有提到b...)



/*宣告 b 是一個整數 這個整數 可代表 0~65535*/




If Number <= 1 Then
abc = 3
(上面這小段程式碼麻煩解說,謝謝)


/* 假如 number 這個數值 小於或等於 1 則將 abc=3
將 3 這個整數 丟給變數 abc 也就是說 設定 abc=3 */



Exit Function
/* 離開 Function 這個 函數 */
End If


/* 這是一種格式 if xxx then
End if */


If Number = 2 Then abc = 1



/* 假如 number 這個數值 等於 2 則將 abc=1
將 3 這個整數 丟給變數 abc 也就是說 設定 abc=1 */




Number = Fix(Number)
(為何要加上"Fix(Number)"???不加上去會有什麼差異???)

/* 將 Number 這個數值 丟進 Fix() 這個函式作運算 運算完並將結果 丟給
Number */







For a = 2 To Number - 1
(2 To Number - 1這一段不懂???)



/* 這是要讓程式 跑回圈的 假如 Number 為 20
Number -1 就是 19
這個程式 會重 2 開始 跑到 19 然後跳開
2 開始執行回圈
3
4
:
:
19
20 跳出回圈


If Number Mod a = 0 Then
(Mod的意義是什麼???)
abc = 2
Exit Function
End If


/* Mod 是 兩數想除取其於數 5 Mod 2 餘數 為 1
則 5 mod 2 就是 1 */





Next a



/* 跑回圈格式

for * to * step *
netx *

*/



abc = 1
End Function

涉寒 2002-12-03 12:17 AM

感謝兩位大大,寫的真詳細...:agree:
小弟只是初學者,參考的是學校的課本。

因為版權的問題我不敢全部轉載上來,我把連結附上,
http://vbex.net/selffunction/isundivnum.html
粉小的程式,適合初學。

kelon 2002-12-03 09:13 AM

VB初學者可以去圖書館借王國榮的書...
超入門又一定看得懂...
還是比較建議學 C/C++ :)

P&W 2002-12-03 03:53 PM

王國榮的書確實很簡單,適合初學者~~

stariloveyou 2002-12-03 04:25 PM

vb 很容易 但太過龐大
要精通不容易 而且 物件越來越多
每天都有新的 唉 粉累喔
不過 c 最好能懂點
加油~~~~
加油~~~~

涉寒 2003-01-02 07:16 PM

又要麻煩各位了,我們老師又出題給我...:jolin:
如果我們已經知道這個數"不是質數",那要如何列出他的因數於MsgBox上???
我們老師有提示 re = i,但我不知道怎麼PO出來...:nonono:

Private Function Math(ByVal Number As Integer) As Byte
Dim i As Integer
If Number <= 1 Then
Math = 3
Exit Function
End If
If Number = 2 Then
Math = 1
End If
For i = 2 To Number / 2
If Number Mod i = 0 Then
Math = 2
Exit Function
End If
Next i
Math = 1
End Function
還有這裡三個 If 要如何改成 ElseIf 呢???
小弟有嘗試改過,不過就是有問題...:(

Private Sub Command1_Click()
On Error GoTo HERE
任意數 = InputBox("請入一個數", "檢查質數")
Select Case Math(任意數)
Case 1
MsgBox "是質數"
Case 2
MsgBox "不是質數"
Case 3
MsgBox "無意義"
End Select
Exit Sub
HERE:
MsgBox "錯誤"
End Sub

涉寒 2003-01-03 07:54 AM

推...:jolin:

涉寒 2003-01-03 11:35 PM

二推...


所有的時間均為GMT +8。 現在的時間是09:51 PM.

vBulletin Version 3.0.1
powered_by_vbulletin 2026。