在工作中遇到這樣乙個問題:
某些資料要分n頁列印,但是在所有但資料頁的前面要列印一張封皮(bg1),然後列印一張公共資訊(bg2),後面是資料(bg3),最後還要列印一張統計資訊(bg4)。比如說:有50組資料,每張報告打10組,就要分5張報告列印,也就是說,先打一張封皮,再打一張公共資訊,然後打5張資料的報告,最後打一張報告,說明這50組資料的統計資訊。一共是1+1+5+1=8張報告。
詳細寫來就是:
for i=1 to n ***********n代表共分多少頁資料報告。
if i=1 ******如果是第一張報告,那麼 列印bg1(封皮),bg2(公共資訊),bg3(實際資料)
for ii=1 to 3
ss=allt(str(ii))
處理報告**。。。。。。。
report bg&ss to print
endfor
else
if i=n ************如果是最後一張報告那麼列印資料和統計資訊。
for ii=3 to 4
ss=allt(str(ii))
處理報告**。。。。。。。
report bg&ss to print
endfor
else**********************如果是中間的資料,則只列印bg3
處理報告**。。。。。。。
report bg3 to print
endif
endif
endfor
當然,這是在情況比較簡單的時候,可以寫出來**。如果情況更加複雜,那麼恐怕if else 就要用的更多。如果換乙個角度來思考這個問題。可以這樣考慮問題。
對於這n張資料報告。for i=1 to n 裡面再嵌乙個for ii=x to y
當i=1 for ii=1 to 3
當i=2 for ii=3 to 3 bg3
當i=3 for ii=3 to 3
當i=n-1 for ii=3 to 3
當i=n for ii=3 to 4
將 ii的左邊的一系列數 1,3,3,3。。。。3
右邊的一系列數 2,3,3,3。。。。4
那麼左邊,右邊 的一系列數分別可以看成乙個 函式(斷點),y=f1(i) y=f2(i) 以i為自變數。
只要我們求出了這兩個函式,就可以把原來的**寫成。
for i=1 to n
for ii=f1(i) to f2(i)
處理報告和資料**。。。。。。。
report bg&ss to print
endfor
endfor
那麼如何能求出這兩個函式呢?
我們可以利用sign()以及它的復合運算。來歸納這兩個函式,當然也可能有好多其他的辦法。當問題變得更複雜,情況更多時,歸納成函式來作,會讓**更簡潔。
才疏學淺,哪位大哥看到了,多提意見。
狀態機思路在程式設計中的應用
狀態機思路在微控制器程式設計中的應用 狀態機的概念 狀態機是軟體程式設計中的乙個重要概念。比這個概念更重要的是對它的靈活應用。在乙個思路清晰而且高效的程式中,必然有狀態機的身影浮現。比如說乙個按鍵命令解析程式,就可以被看做狀態機 本來在a狀態下,觸發乙個按鍵後切換到了b狀態 再觸發另乙個鍵後切換到c...
狀態機思路在程式設計中的應用
狀態機思路在微控制器程式設計中的應用 狀態機的概念 狀態機是軟體程式設計中的乙個重要概念。比這個概念更重要的是對它的靈活應用。在乙個思路清晰而且高效的程式中,必然有狀態機的身影浮現。比如說乙個按鍵命令解析程式,就可以被看做狀態機 本來在a狀態下,觸發乙個按鍵後切換到了b狀態 再觸發另乙個鍵後切換到c...
狀態機思路在程式設計中的應用
狀態機思路在微控制器程式設計中的應用 狀態機的概念 狀態機是軟體程式設計中的乙個重要概念。比這個概念更重要的是對它的靈活應用。在乙個思路清晰而且高效的程式中,必然有狀態機的身影浮現。比如說乙個按鍵命令解析程式,就可以被看做狀態機 本來在a狀態下,觸發乙個按鍵後切換到了b狀態 再觸發另乙個鍵後切換到c...