VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

小學3年級課本上的題

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
朱育興



註冊時間: 2003-08-25
文章: 661
來自: 台中市大里區

第 1 樓

發表發表於: 星期三 一月 14, 2004 1:32 am    文章主題: 小學3年級課本上的題 引言回覆

本人的職業病又犯了,在別的論壇看到一個數學題目,一時手癢,
放著手邊要趕的工作卻來解他問的題目:

小學3年級課本上的題
上看了這個題,很有意思:
1,2,3,4,5。五個數字。用加減乘除組合在一起,並且每個數字和符號位置不限,
但只能用一次 ,而且必須用一次, 讓它組合後得22 。 (大中小括可以隨便用)

我用下面的程式求出答案
(3/2-1+5)*4
(3/2+5-1)*4
4*(3/2-1+5)
4*(3/2+5-1)
4*(5-1+3/2)
4*(5+3/2-1)
(5-1+3/2)*4
(5+3/2-1)*4

事實上答案是一個,差異只是排列的順序


程序如下:
代碼:

* 2004/01/14 朱育興 YSC E-MALI:y5096@ms23.hinet.net
* 是以數學窮舉法的概念來求解。

CLEAR ALL
CLOSE ALL

ON ERROR DO F_Error  && 只是處理分母為零

* 取得 1、2、3、4、5 排列的情形
SELECT 0
CREATE CURSOR TMP_Num (NumList C(5))
FOR W1_SUB_A = 1 TO 5
FOR W1_SUB_B = 1 TO 5
  IF W1_SUB_B = W1_SUB_A
    LOOP
  ENDIF
  FOR W1_SUB_C = 1 TO 5
    IF INLIST(W1_SUB_C,W1_SUB_A,W1_SUB_B)
      LOOP
    ENDIF
    FOR W1_SUB_D = 1 TO 5
      IF INLIST(W1_SUB_D,W1_SUB_A,W1_SUB_B,W1_SUB_C)
        LOOP
      ENDIF
      FOR W1_SUB_E = 1 TO 5
        IF INLIST(W1_SUB_E,W1_SUB_A,W1_SUB_B,W1_SUB_C,W1_SUB_D)
          LOOP
        ENDIF
        APPEND BLANK
        REPLACE NumList WITH TRANSFORM(W1_SUB_A*10000+W1_SUB_B*1000+;
                             W1_SUB_C*100+W1_SUB_D*10+W1_SUB_E,"@L 99999")
      ENDFOR
    ENDFOR
  ENDFOR
ENDFOR
ENDFOR

* 取得 +、-、*、/ 四則運算排列的情形
DIMENSION M_aSign(4)
M_aSign(1) = "+"
M_aSign(2) = "-"
M_aSign(3) = "*"
M_aSign(4) = "/"
SELECT 0
CREATE CURSOR TMP_Sign (SignList C(4))
FOR W1_SUB_A = 1 TO 4
FOR W1_SUB_B = 1 TO 4
  IF W1_SUB_B = W1_SUB_A
    LOOP
  ENDIF
  FOR W1_SUB_C = 1 TO 4
    IF INLIST(W1_SUB_C,W1_SUB_A,W1_SUB_B)
      LOOP
    ENDIF
    FOR W1_SUB_D = 1 TO 4
      IF INLIST(W1_SUB_D,W1_SUB_A,W1_SUB_B,W1_SUB_C)
        LOOP
      ENDIF
      APPEND BLANK
      REPLACE SignList WITH M_aSign(W1_SUB_A)+M_aSign(W1_SUB_B)+;
                       M_aSign(W1_SUB_C)+M_aSign(W1_SUB_D)
    ENDFOR
  ENDFOR
ENDFOR
ENDFOR

* 取得 1、2、3、4、5 與 +、-、*、/ 的混合運算式
DIMENSION M_aMum(5)
STORE SPACE(0) TO M_aMum
SELECT TMP_Num
SCAN ALL
  FOR W1_SUB_A = 1 TO 5
    M_aMum(W1_SUB_A) = SUBSTR(TMP_Num.NumList,W1_SUB_A,1)
  ENDFOR
  SELECT TMP_Sign
  SCAN ALL
    M_cExprList = SPACE(0)
    FOR W1_SUB_A = 1 TO 4
      M_cExprList = M_cExprList + M_aMum(W1_SUB_A) +;
                    SUBSTR(TMP_Sign.SignList,W1_SUB_A,1)
    ENDFOR
    M_cExprList   = M_cExprList + M_aMum(5)

    FOR W1_SUB_A = 1 TO 4
    FOR W1_SUB_B = W1_SUB_A+1 TO 5
      M_cExprList1 = SUBSTR(M_cExprList,1,(W1_SUB_A-1)*2)
      M_cExprList3 = SUBSTR(M_cExprList,W1_SUB_B*2)
      M_cExprList2 = SUBSTR(M_cExprList,LEN(M_cExprList1)+1,;
                     LEN(M_cExprList)-LEN(M_cExprList1+M_cExprList3))
      M_cExprList0 = M_cExprList1 + "(" + M_cExprList2 + ")" + M_cExprList3
      M_nExprList0 = EVAL(M_cExprList0)
      IF M_nExprList0 = 22
        ? M_cExprList0
      ENDIF
    ENDFOR
    ENDFOR
  ENDSCAN
ENDSCAN

USE IN TMP_Sign
USE IN TMP_Num
ON ERROR
RETURN

FUNCTION F_Error
* 發生分母為零的錯誤時之處置
* Nothing
RETURN
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
Ruey



註冊時間: 2003-03-12
文章: 1698
來自: tunglo

第 2 樓

發表發表於: 星期三 一月 14, 2004 1:18 pm    文章主題: 引言回覆

你是學數學的嗎?
_________________
#############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!

學會VFP使用者社區的搜尋,Code才會更有趣~
#############################
回頂端
檢視會員個人資料 發送私人訊息
朱育興



註冊時間: 2003-08-25
文章: 661
來自: 台中市大里區

第 3 樓

發表發表於: 星期三 一月 14, 2004 2:24 pm    文章主題: 引言回覆

我是應用數學畢業的,在還沒成為程式設計人員前,從事數學教學 10 年以上(補習班或家教)
_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
Ruey



註冊時間: 2003-03-12
文章: 1698
來自: tunglo

第 4 樓

發表發表於: 星期三 一月 14, 2004 6:04 pm    文章主題: 引言回覆

那你跟我是同科系喔.

程式設計師不好做ㄛ

需要很要花很多的心思在上面.

要應用的知識必須自己去學.

_________________
#############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!

學會VFP使用者社區的搜尋,Code才會更有趣~
#############################
回頂端
檢視會員個人資料 發送私人訊息
alensap



註冊時間: 2003-10-23
文章: 8


第 5 樓

發表發表於: 星期四 一月 15, 2004 6:36 pm    文章主題: 引言回覆

真有意思!!

~^_^~

_________________
人生有涯、學海無涯 ~^_^~
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作