Re: [ASP ] 想寫個像樂透的程式但是遇到了瓶頸

看板Visual_Basic作者時間16年前 (2008/03/30 11:45), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/5 (看更多)
※ 引述《karta2506968 (天冷心更冷)》之銘言: : 我想寫個像樂透模式差不多的程式 : 但是沒辦法像樂透一樣6個號碼 : 在加一個特別號,我一直都很煩惱,請各位高手告訴我加上一個特別號要怎麼寫 : 程式碼如下 : Module Module1 : Sub Main() : Dim i, n, x As Long : Console.WriteLine("樂透") : For i = 1 To 6 : Randomize() : n = Int(Rnd() * 42) : Console.WriteLine("中獎號碼" & n) : Next : Console.ReadLine() : End Sub : End Module 我給你我寫的 不過我寫的是大樂透 49取7 ----------------------------------------------------------- Module Module1 Sub Main() Dim i%, y%, y1%, y2%, y3%, y4%, y5%, y6%, y7% For y = 1 To 7 If y < 7 Then Console.Write("大樂透號碼為=") Else Console.Write("特別號為=") End If Call newrnd(i) If y = 1 Then y1 = i If y = 2 Then y2 = i If y = 3 Then y3 = i If y = 4 Then y4 = i If y = 5 Then y5 = i If y = 6 Then y6 = i If y = 7 Then y7 = i L2: If y2 = y1 Then Call newrnd(i) y2 = i GoTo L2 ElseIf y3 = y2 Or y2 = y1 Then Call newrnd(i) y3 = i GoTo L2 ElseIf y4 = y3 Or y3 = y2 Or y2 = y1 Then Call newrnd(i) y4 = i GoTo L2 ElseIf y5 = y4 Or y4 = y3 Or y3 = y2 Or y2 = y1 Then Call newrnd(i) y5 = i GoTo L2 ElseIf y6 = y5 Or y5 = y4 Or y4 = y3 Or y3 = y2 Or y2 = y1 Then Call newrnd(i) y6 = i GoTo L2 ElseIf y7 = y6 Or y6 = y5 Or y5 = y4 Or y4 = y3 Or y3 = y2 Or y2 = y1 Then Call newrnd(i) y7 = i GoTo L2 End If Console.WriteLine(i) Next Console.ReadLine() End Sub Sub newrnd(ByRef I) Randomize() l1: I = Int(Rnd() * 49) If I = 0 Then GoTo l1 End If End Sub End Module ----------------------------------------------------------- 以上是亂七八糟寫法 土法鍊鋼 一個一個比較 讓它不重覆 不過 對應課本用了一個副程式 而下面這個 是我同學寫的 不過有個地方我一直看不懂 給你參考 順便請強者替我解答我看不懂的地方 ----------------------------------------------------------- Module Module1 Sub Main() Dim array(6) As Integer Dim i, x As Integer For i = 0 To 6 Randomize() array(i) = (Rnd() * 48) + 1 For x = 0 To 6 If array(i) <> array(x) Then End If array(i) = (Rnd() * 48) + 1 Next Next Console.WriteLine("樂透開獎號碼") Console.WriteLine("第一個號碼為" & vbTab & array(0)) Console.WriteLine("第二個號碼為" & vbTab & array(1)) Console.WriteLine("第三個號碼為" & vbTab & array(2)) Console.WriteLine("第四個號碼為" & vbTab & array(3)) Console.WriteLine("第五個號碼為" & vbTab & array(4)) Console.WriteLine("第六個號碼為" & vbTab & array(5) & vbCrLf) Console.WriteLine("特別號為" & vbtab &array(6)) Console.ReadLine() End Sub End Module ----------------------------------------------------------- 看不懂的地方在中間這一段 For x = 0 To 6 If array(i) <> array(x) Then End If array(i) = (Rnd() * 48) + 1 Next 我知道 他設了一個陣列 用for next去對應陣列位置 然後 用x去比較新舊數字是否重複 但是 為何他if 數字不一樣 then後面卻是空的 然後再執行一次重取亂數 而我改成 For x = 0 To 6 If array(i) = array(x) Then array(i) = (Rnd() * 48) + 1 end if Next 就不行~"~ 請知道的大大替我解答一下 謝謝 給原po 這是大樂透 要記得把數字樣本改回你須要的數字 不然樂透出現49....老師肯定說你抄的XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.143.39.42

03/30 12:45, , 1F
If 裡面應該是 Exit For
03/30 12:45, 1F

03/30 23:56, , 2F
真是一語點醒夢中人~我懂了~^^ 謝謝
03/30 23:56, 2F
文章代碼(AID): #17xmpCY3 (Visual_Basic)
討論串 (同標題文章)
文章代碼(AID): #17xmpCY3 (Visual_Basic)