題目程式要求:

 

程序1:用亂數產生範圍在1~9之間整數的1D陣列A,陣列含有9個整數,整數數值可重複

 

程序2:用亂數產生範圍在1~9之間的整數B,用整數B比對陣列A內的整數。若有和陣列A內的整數重複,則重新用亂數再產生新的整數B。若都沒有和陣列A內的整數重複,則直接輸出整數B

 

程式重點:程序1所產生的陣列A偶而會產生1~9整數全包含且不重複的陣列,此時程序2會陷入無限迴圈內不會停止的無解狀態。程式必需能判斷程序2是否已陷入無限迴圈,若已陷入無限迴圈則直接停止程序2,自動再跳回程序1從頭執行

 


完成的程式如下:

20090328  

 

程序2判斷是否陷入無限廻圈的部分,我使用1個包含1~9整數的標準陣列當作判斷陣列,每當整數B有和標準陣列內的整數相同時,則將相同的整數自標準陣列內去除。若標準陣列內的整數全被去除,則程式判定程序2已陷入無限迴圈,直接停止程序2


※經過實際將程式執行1億次來驗證,會產生1~9整數全包含且不重複的陣列的機率為0.0044%,也就是每執行10000次會出現44次左右。雖然遇上的機率不高,但程式可確實避免陷入無限迴圈的狀態

arrow
arrow
    文章標籤
    作業習題 無線迴圈
    全站熱搜

    未出師的小工程師 發表在 痞客邦 留言(7) 人氣()