某物品柜有5層,每層有10個(gè)格子,每個(gè)格子只能放一個(gè)物品。第1層格子編號(hào)依次為1到10,第2層格子編號(hào)依次為11到20,依此類推。有9組物品(組號(hào)1~9),每組有2到8個(gè)物品,物品總數(shù)不超過50個(gè)。將9組物品按組號(hào)由小到大依次放入柜中,放置方式有兩種:
(1)整體放置。按格子編號(hào)由小到大的次序查找第一個(gè)可放置該組全部物品的空區(qū)域(空區(qū)域是指從某個(gè)空格子開始的同層連續(xù)的所有空格子),若找到,則在該空區(qū)域居中、連續(xù)放置該組全部物品,如圖a所示。
(2)零散放置。若所有空區(qū)域格子數(shù)都小于該組物品數(shù),則將該組每個(gè)物品依次放置在當(dāng)前編號(hào)最小的空格子中,如圖b所示。
編寫VB程序,模擬物品放置。運(yùn)行程序,在列表框List1中顯示每組物品的組號(hào)和數(shù)量,單擊“放置”按鈕Command1,在列表框List2中顯示每組物品放置結(jié)果。程序運(yùn)行界面如圖c所示。
(1)若第1、第2組的物品數(shù)分別為6和2,則放置第2組物品的格子編號(hào)依次為
1,2
1,2
。
(2)實(shí)現(xiàn)上述功能的VB程序如下,請(qǐng)?jiān)跈M線處填入合適的代碼。
Constm=50’m表示物品柜的格子數(shù)
Constw=10’w表示物品柜每層的格子數(shù)
Constn=9’n表示物品的組數(shù)
’f(i)存儲(chǔ)第i個(gè)格子開始的同層連續(xù)的所有空格子數(shù)。f(i)為0表示第i個(gè)格子不是空格子
Dimf(m)AsInteger
Dima(n)AsInteger
PrivateSubForm_Load
( ?。?/div>
( ?。?/div>
’讀取各組物品的個(gè)數(shù)依次存入數(shù)組a,并在List1中顯示
’代碼略
EndSub
Functiongetpos(rAsIntegerAsInteger
’按格子編號(hào)從小到大的次序,查找空格子數(shù)≥r的第一個(gè)空區(qū)域
’若找到,返回該空區(qū)域的起始編號(hào),否則返回-1
’代碼略
EndFunction
PrivateSubCommand1_Click ( ?。?br />DimiAsInteger,jAsInteger,kAsInteger,pAsInteger,vAsInteger
DimsAsString
Fori=1Tom
f(i)=w-(i-1)Modw’w為10,表示每層的格子數(shù)
Nexti
v=1
Fori=1Ton
s=““
p=①
Ifp=-1Then
j=1
DoWhilej<=a(i)
Iff(v)<>0Then
s=s+Str(v)
f(v)=
j=j+1
EndIf
②
Loop
Else
k=(f(p)-a(i))\2
Forj=kTo1Step-1
f(p)=j
p=p+1
Nextj
Forj=③
f(j)=0
s=s+Str(j)
Nextj
EndIf
List2.AddItem“第“+Str(i)+“組:“+s
Nexti
EndSub
【答案】1,2;( ?。?/div>
【解答】
【點(diǎn)評(píng)】
聲明:本試題解析著作權(quán)屬菁優(yōu)網(wǎng)所有,未經(jīng)書面同意,不得復(fù)制發(fā)布。
發(fā)布:2024/6/27 10:35:59組卷:6引用:1難度:0.5
相似題
-
發(fā)布:2024/8/26 0:0:8組卷:2引用:1難度:0.5
-
發(fā)布:2024/8/26 0:0:8組卷:1引用:1難度:0.5
-
發(fā)布:2024/8/26 0:0:8組卷:1引用:1難度:0.5
把好題分享給你的好友吧~~