Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

再請教一個C++問題

0 views
Skip to first unread message

Seventh Heaven

unread,
Aug 18, 2002, 2:37:11 PM8/18/02
to
若要利用亂數產生10個整數,將奇數存入陣列註標為奇數的元素內,
偶數存入陣列註標為偶數的元素內,也就是說若有一陣列a[N]
欲使最後輸出
a[0] a[1] a[2] ......a[9]
20 13 6 55 (此列的數字都是亂數決定的)

(這樣應該看得懂我的問題吧)
其中的程式有一段為:(N為常數10)

int a[N],p=0,q=1;
randomize();
do
{ int t = random(100);
if (t % 2==0) //偶數
{ [1;33m if (p>N) continue; [m
a[p]=t;
p += 2; //0,2,4,6..
}
else
{ [1;33m if (q>N) continue; [m
a[q]=t;
q += 2; //1,3,5,7...
}
} while (p<N || q<N);

我想問的是黃色的那兩列代表什麼意義呢?
N設為10表示陣列有10個元素,要是p或q大於10不就超過了,
為何要加上continue啊?
且最後一列為何是p<N或 q<N就結束迴圈呢?
麻煩教我一下,謝謝囉
--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: xray8.phys.nthu.edu.tw

原點

unread,
Aug 18, 2002, 9:04:47 PM8/18/02
to
==> bz....@bbs.cs.nthu.edu.tw (Seventh Heaven) 提到:
: 若要利用亂數產生10個整數,將奇數存入陣列註標為奇數的元素內,

: 偶數存入陣列註標為偶數的元素內,也就是說若有一陣列a[N]
: 欲使最後輸出
: a[0] a[1] a[2] ......a[9]
: 20 13 6 55 (此列的數字都是亂數決定的)
: (這樣應該看得懂我的問題吧)
: 其中的程式有一段為:(N為常數10)
: int a[N],p=0,q=1;
: randomize();
: do
: { int t = random(100);
: if (t % 2==0) //偶數
: { [1;33m if (p>N) continue; [m
: a[p]=t;
: p += 2; //0,2,4,6..
: }
: else
: { [1;33m if (q>N) continue; [m
: a[q]=t;
: q += 2; //1,3,5,7...
: }
: } while (p<N || q<N);

加上黃色那兩列是為了要避免當連續產生五個
偶數或是奇數的情況,設想,如果連續產生五個
五個偶數的話,p是不是會等於12,但是由於奇數
的部分還沒產生,所以不可離開loop,而最後一
行是說當p<N或q<N時繼續loop!!!


: 我想問的是黃色的那兩列代表什麼意義呢?


: N設為10表示陣列有10個元素,要是p或q大於10不就超過了,
: 為何要加上continue啊?
: 且最後一列為何是p<N或 q<N就結束迴圈呢?
: 麻煩教我一下,謝謝囉

--

眺望天空找她的影子
落了一地的星星和她那句話
在黑夜的深處掀起大霧
是誰啊!這樣考驗著我 不管我有多無助
� 我的心跟著她的心 迷了路

--
◎ [1;31m龍 [32m貓 [33m資 [34m訊 [35m天 [36m地 [0m( [1mbbs.mgt.ncu.edu.tw [0m)
◎[ [1;33;46mrhythm [0m]From: 226070.D17-226.ncu.edu.tw

Seventh Heaven

unread,
Aug 19, 2002, 3:51:06 AM8/19/02
to
※ 引述《rhyth...@bbs.mgt.ncu.edu.tw (原點)》之銘言:

> ==> bz....@bbs.cs.nthu.edu.tw (Seventh Heaven) 提到:
> : a[0] a[1] a[2] ......a[9]
> : 20 13 6 55 (此列的數字都是亂數決定的)
> : 其中的程式有一段為:(N為常數10)
> : int a[N],p=0,q=1;
> : randomize();
> : do
> : { int t = random(100);
> : if (t % 2==0) //偶數
> : { [1;33m if (p>N) continue; [m
> : a[p]=t;
> : p += 2; //0,2,4,6..
> : }
> : else
> : { [1;33m if (q>N) continue; [m
> : a[q]=t;
> : q += 2; //1,3,5,7...
> : }
> : } while (p<N || q<N);
> 加上黃色那兩列是為了要避免當連續產生五個
> 偶數或是奇數的情況,設想,如果連續產生五個
原來如此....
> 五個偶數的話,p是不是會等於12,但是由於奇數
可是連續產生5個偶數時,第5個偶數代表的p值應為8吧
因為p的初值為0,為何會是12呢?

> 的部分還沒產生,所以不可離開loop,而最後一
> 行是說當p<N或q<N時繼續loop!!!




.......?_?.......

unread,
Aug 22, 2002, 2:18:58 AM8/22/02
to
※ 引述《bz....@bbs.cs.nthu.edu.tw (Seventh Heaven)》之銘言:
> 若要利用亂數產生10個整數,將奇數存入陣列註標為奇數的元素內,
> 偶數存入陣列註標為偶數的元素內,也就是說若有一陣列a[N]
> 欲使最後輸出

> a[0] a[1] a[2] ......a[9]
> 20 13 6 55 (此列的數字都是亂數決定的)
> (這樣應該看得懂我的問題吧)

> 其中的程式有一段為:(N為常數10)
> int a[N],p=0,q=1;
> randomize();
> do
> { int t = random(100);
> if (t % 2==0) //偶數
> { [1;33m if (p>N) continue; [m
> a[p]=t;
> p += 2; //0,2,4,6..
> }
> else
> { [1;33m if (q>N) continue; [m
> a[q]=t;
> q += 2; //1,3,5,7...
> }
> } while (p<N || q<N);
> 我想問的是黃色的那兩列代表什麼意義呢?
> N設為10表示陣列有10個元素,要是p或q大於10不就超過了,
> 為何要加上continue啊?
> 且最後一列為何是p<N或 q<N就結束迴圈呢?
> 麻煩教我一下,謝謝囉

continue 會讓程式回到迴圈的第一行
do{} while(A) 當A邏輯運算成立時會回到迴圈第一行
所以當p<N 或 q<N 表示偶數或奇數尚未取完亂數,還需要繼續...

閒著沒事改成下面這樣...@.@

for(i=0;i<N;i++)
a[i] = random(50)*2 + i%2;

^_^
--
[1;32m※ Origin: [33m摩卡小築 [37m<moca.csie.chu.edu.tw> [m
[1;31m◆ From: [36m61-222-71-44.HINET-IP.hinet.net [m

0 new messages