這是最近朋友委托,遇到較吃力的東西,案子蠻趕的。

由於案子屬金融業,一些專業背景並沒很熟練,鑑於溝通之後,發案人願意拉 excel  出來,讓我觀察公式。發現其實金融業的東西真的不好搞。前半段雖然有點吃力,勉強將架構避開使用硬爆法,但某些條件實在是要不停拉出來重新判斷,有時會想是不是直接硬暴比較快?

前半段不算重點,無論如何,有很多方式可完成,重點是中後半段。

中後半段之 excel 公式沒一定規則可尋,來源儲存格為一 6 * 24 表格,總計公式近五千個公式,我不確定這五千個公式是否有跡可尋,但在先前與委托者光是花在「了解問題」就花了四、五個小時,若後面這五千個公式,我想要弄清這些公式怎麼來的,再實際寫 code 下去,時間恐怕不允許。

眼看委托者本身也即將結案,我還在慢慢盧那 5000 個公式嗎?沒辦法了,我只好撤出殺手鐧,假設進行之 Project 稱為 project X

1. project X 先將6*24 表格數值先讀到 double x[6][24] 裡面。

2. 另外開一份 project generate,程式碼輸出此結果

#define A0 x[0][0]
#define A1 x[1][0]
#define A2 x[2][0]
...
#define X6 x[5][24]

3. 把 project generate 輸出之 macro 貼到 Project X

4. 將 excel 調成「顯示公式」,再把那 5000 筆公式複制到 .txt

5. 開啟 .txt,tab 取代成逗號,= 取代成 (Nil, 也就是消掉),.txt 裡面的所有文字稱作 INIT_TEXT

6. 再 Porject 裡面,多設一變數 double rst[5000],再將 INIT_TEXT 當作 rst 之初始值。

若不是真的很趕,真不會想到用這方法硬暴下去,可想而知 compile 時間實在是久得不像話,

目前 Visual C++ 2010 Release 編譯了近 15 分鐘!

還好委托者不打算收 source code,重點是一次性開發而已,故才靈機一動用這麼 kuso 的方式達成;

若要收的話,這種 source code 肯定是拿出來讓別人笑的。

arrow
arrow
    全站熱搜

    edisonx 發表在 痞客邦 留言(1) 人氣()