请教这个条件,代码应该怎么改?(分不够可以加)
原来是要求有人获得12个西瓜之后取消排序资格,不够12个西瓜的继续循环
可是现在又加了一个条件是:
要求有人获得12个西瓜之后取消排序资格,不够12个西瓜的继续循环,或者是有部分人获得7个西瓜之后取消排序资格,不够7个西瓜的继续循环
///////////////////////////////////////////////////////////
这里是题
第1个人上来本人获得2个西瓜
第2个人上来本人获得1个西瓜同时第1个人排在第2个人后面加一个西瓜总共的3个西瓜,
第3个人上来本人获得1个西瓜同时第2个人排在第3个人后面加一个西瓜共2个西瓜。
第4个人上来本人获得1个西瓜同时第1个人排在第4个人后面加一个西瓜共4个西瓜
第5个人上来本人获得1个西瓜同时第3个人平在第5个人后面加一个西瓜共2个西瓜
第6个人上来本人获得一个西瓜同时第2个人平在第6个人后面加一个西瓜共3个西瓜
要求有人获得12个西瓜之后取消排序资格,不够12个西瓜的继续循环
求来任何人时,前面某个人的排名及获得了几个西瓜
////////////下面是代码/////////////////////////////////////////////////////////
//下面的代码是计算第21人要来排队时,前面的20人的情况:
//你上面说求来任何人时,前面某个人的排名及获得了几个西瓜
//那么我就假设来第1001人时(这个还没有排上来,但第1000人已排完了),所以正的排队的人的排队位
//置及西瓜数,所有人都按其来的先后标为第X位.就算现在只有12人排队,但如其是第999人排队的人,
//他就叫"第999个排队的人"
int m[5000,3]
//m[1][1]为来到的先后顺序,m[1][2]为其现在排队位置,m[1][3]为其所得到的西瓜数
m[1,1]=1
m[1,2]=1
m[1,3]=2 //先得2个西瓜
int i,j=1
//这里打印显示第X人的当前的位置及西瓜数,
//例如要知道第7人要来排队时前面各人的情况就 i=2 to 6,
//要知道第1001个人要来排队时前面各人的情况就i=2 to 1000
for i=2 to 20 //注意此数不可太大,1000还是没问题的,太大数组m的一维也要加大,否则会越界
//新排队的人先得到一个西瓜,并排在最后
j++
m[j,1]=i
m[j,2]=j
m[j,3]=1
//然后最前面的人让出第一位改排在最后(其它人就要前移了)
m[j+1,3]=m[1,3]+1
if m[j+1,3]=12 then //达到12个取消排队资格,即清除它
m[j+1,3]=0
j --
else
m[j+1,1]=m[1,1]
m[j+1,2]=j+1
end if
int k,h
h=j+1
for k=2 to h
m[k -1,1]=m[k,1]
m[k -1,2]=k -1
m[k -1,3]=m[k,3]
if k=h then
m[k,1]=0
m[k,2]=0
m[k,3]=0
end if
next
next
int li_file
li_file=FileOpen("C:\do.txt",LineMode!,Write!,Shared!,Append!)
FileClose(li_file)
if FileDelete("C:\do.txt")=false then
messagebox("操作被取消","无法删除旧记录,请确认该文件是否正被打开! ")
return
end if
li_file=FileOpen("C:\do.txt",LineMode!,Write!,Shared!,Append!)
if li_file=0 then
messagebox("提示","无法打开文件,请重试操作!")
return
else
FileWrite(li_file,"~r~n"+"操作时间:"+String(today(),'yyyy/mm/dd hh:mm:ss'))
//先记下本次操作时间
end if
for i=1 to 5000
if m[i,1]>0 then
FileWrite(li_file,"~r"+"第["+string(m[i,1])+"]个排队的人,现在排在第["+string(m[i,2])+"]位,共有["+string(m[i,3])+"]个西瓜")
else
FileWrite(li_file,"~r~n"+"上面是第["+string(i)+"]个人想要来排队时(尚未排入时)各人的情况! ")
i=6000
Messagebox("计算完成","结果已输出到C:\do.txt,请确认查看该文件! ")
run("notepad.exe c:\do.txt")
end if
next
FileClose(li_file)