|
|
馬上注冊,結交更多好友,享用更多功能,讓你輕松玩轉社區
您需要 登錄 才可以下載或查看,沒有賬號?立即注冊
×
本帖最后由 羅蓋仙 于 2013-3-13 12:59 編輯 + o' \$ J1 G5 B/ z
. n9 j9 G6 B* {上次某個大大發:「編寫加工中心優秀宏程序要訣」與「數據交換法.置換法」的文章( `' l; ~6 v- _! f
,我看完之後有靈感,
9 W3 _6 V6 v% j# w$ S2 l0 I% B有人說數據交換法.能用于何處???我來舉個例子: z5 e- |7 n; C d! O
$ M$ S- l, B% Q; H7 `2 d) x+ ^' E9 U如果#1入值必須比#2大,然後#1的搭擋是#3;另一方面#2的搭擋是#4. r: z) R% K6 M2 H, V! J
使用者把它顛倒了,#2的值比#1來得大,你可以這樣寫,我們使用數據交換法
/ u+ ]) P, I! J" w0 S方法A:7 q9 K. j& _5 P
IF[#1GE#2]GOTO5
' c, i6 K9 R, I" e/ t% K2 d1 o% c#1=#1+#2- x8 ^) b/ P7 S9 @! K9 K4 p) ^
#2=#1-#27 j% R) z% d4 F' o. J5 M/ d6 P
#1=#1-#2
1 ?* M8 F! c& i: K" c#3=#3+#4- O; F, k3 |5 S) K% U. Y
#4=#3-#4
# E$ A/ G6 }. Q9 g$ A1 ~#3=#3-#4
+ d+ q9 X4 c" G8 x1 CN5......此時#1的值已經置換過來了.#1的值一定比#2大
, W) g2 k. H( P& m( S* b: w0 Z5 @1 x0 g8 b* Q- z5 ?
我覺得可以不去使用GOTO,我改變它使用WHILE會更妙, L0 Z9 n, k O; d( Q4 C- t- K4 m9 U
方法B:
: g8 [. r; D& a- `WHILE[#1LT#2]DO1: O- b$ f, \& X$ ^2 _, h6 {
#1=#1+#2
3 ~& J. A* `7 y( r: d4 |. T# w#2=#1-#2% L# i) Q) Z& p- Y
#1=#1-#2
3 v: y, ]7 Z) D m#3=#3+#4
; w. s F! d4 w+ L' n, g( Y#4=#3-#4' c% d4 Y2 z, J" b% P7 P. L6 o
#3=#3-#4
) @; N# J8 F& S- |/ K5 YEND1
8 q2 `! u2 L: v. Z& e0 H......(N5也不用加了.沒有過多的N序號.此時#1的值已經交換過來的.#1的值一定比#2大)
! f4 `% p+ p1 R, g m' E+ G1 I
& M/ T! J3 y* I q方法B:就是#2條件不成立(沒有錢)會避開迴圈(餐廳)不進入,#2如果條件(有錢)須要它進入..不用任何迴圈計1次器..進入(餐廳)之後完成裡面的動作..自然會離開迴圈(餐廳)..就是裡面的動作(伙食)能滿足它..吃飽就會閃..因為#2吃飽又變成沒錢了..比起他不消費的朋友#1 |
|