1.(考基本程式設計和邏輯)
假設有N個人排隊來領號碼牌,領的號碼牌是1-N號,接下來要從N個人挑7個人入選
(也就是說排隊的人只是先取得資格,中選的人是另由程式挑選)
排序規則如下,請依題目撰寫程式(使用程式語言不限)。
從N個號碼挑選一個起始號碼,以及一個間隔號碼,共取7個人,超過N則從頭開始算起
已被取出的號碼就不會在數列中(註:非隨機取亂數)
假設N=10,起始號碼=3,間隔碼號=3,挑選人數=7
那麼取出的號碼順序如下:
3、6、9、2、7、1、8
==================程式碼===============
// N=10
int [ ] Picked = new int [10];
int [ ] PickList = new int[7];
int PickedIndex = 0;
// 間隔碼號=3
int Picki = 3;
// 起始號碼用Random
Random r;
int Starti = r *10;
// 挑選人數 等於7人
while(PickedIndex != 7-1)
{
if(Picki == 3)
{
if(Picked[Starti-1] != 0)
{
PickList[PickedIndex] = Starti;
Picked[Starti-1] = 1;
PickedIndex++;
Picki = 0;
}
else
{
while(Picked[Starti-1] ==0)
{
Starti++;
if(Starti == 10)
{
Starti = 1;
}
}
PickList[PickedIndex] = Starti;
Picked[Starti-1] = 1;
PickedIndex++;
Picki = 0;
}
}
else
{
Picki++;
Starti++;
if(Starti == 10)
{
Starti = 1;
}
}
}
假設有N個人排隊來領號碼牌,領的號碼牌是1-N號,接下來要從N個人挑7個人入選
(也就是說排隊的人只是先取得資格,中選的人是另由程式挑選)
排序規則如下,請依題目撰寫程式(使用程式語言不限)。
從N個號碼挑選一個起始號碼,以及一個間隔號碼,共取7個人,超過N則從頭開始算起
已被取出的號碼就不會在數列中(註:非隨機取亂數)
假設N=10,起始號碼=3,間隔碼號=3,挑選人數=7
那麼取出的號碼順序如下:
3、6、9、2、7、1、8
==================程式碼===============
// N=10
int [ ] Picked = new int [10];
int [ ] PickList = new int[7];
int PickedIndex = 0;
// 間隔碼號=3
int Picki = 3;
// 起始號碼用Random
Random r;
int Starti = r *10;
// 挑選人數 等於7人
while(PickedIndex != 7-1)
{
if(Picki == 3)
{
if(Picked[Starti-1] != 0)
{
PickList[PickedIndex] = Starti;
Picked[Starti-1] = 1;
PickedIndex++;
Picki = 0;
}
else
{
while(Picked[Starti-1] ==0)
{
Starti++;
if(Starti == 10)
{
Starti = 1;
}
}
PickList[PickedIndex] = Starti;
Picked[Starti-1] = 1;
PickedIndex++;
Picki = 0;
}
}
else
{
Picki++;
Starti++;
if(Starti == 10)
{
Starti = 1;
}
}
}
留言
張貼留言