進度
2011年4月26日 星期二
這次解決兩個問題了…
但是又發現一些問題…
算了…
先偷懶摸魚之後再說…
Life ought to be spent on beautiful things
第三天了
終於把程式給搞出來
應該算得上是 Hill Cipher 實作吧
連續兩個晚上睡前都一直在想 bug 要怎麼除掉
害我半夜又爬起來繼續夜戰
雖然程式還有很多地方可以修改
但至少已經作到一個堪用的階段
總算可以鬆口氣了
昨晚程式寫到編譯器跟我翻臉
因為我用了太多二維陣列,浪費太多記憶體了
洋洋灑灑寫了一堆程式到頭來又要重改...
目前只能輸入 10 個字元
只能輸入英文小寫字母
私密金鑰不能由使用者指定
程式只能執行一次
二維陣列過多
這五項缺失是下一次改進的目標
假如有幸把缺失改完
我有點想把程式碼移植到 QT 變成 UI
不過 QT 完全不熟… Hello World 搞很久…
突然間想到,還有更複雜的解密…
還要跟嫦娥約會幾次才能完成呢??
剛剛才終於把報告給趕完了
鬆了一口氣
雖然有點累有點想睡不過又因為連日來的失眠所以睡不著
乾脆發個文唄
這是我第一個用 QT 弄出來的程式
注意喔,我用的詞是『弄出來的程式』而不是『寫出來的程式』
因為這支程式根本不需要用寫的
只需要元件拉一拉再 debug 一下就好了
簡單到不行,難怪市面上一直找不到他的書
雖然我也很想把拉元件的過程給錄下來
但是不知道怎麼回事就是沒辦法
一旦開始錄影 QT 就沒辦法正常運作
到底是怎麼回事阿??
為了寫程式找了很多書來看
好多書的第一個範例程式都叫做 HelloWorld
不管是 C++, JAVA, QT 等都一樣
我真想知道這是什麼樣的默契阿
原本我以為我的程式進度到了一半
所以興高采烈的找了 QT 要來開發程式的 UI
結果昨天晚上我的程式竟然被期末考的題目給擊敗了 (晴天霹靂)
為此我為了找出 bug 在何處弄得整晚沒睡,但是眼皮太沉在 3 點鐘睡了
大概知道問題出在哪裡,但是還沒把 bug 除掉
問題在於質數太大了,再加上指數運算之後超出 int 的範圍
不過我改成 unsigned int 之後順利把 bug 除掉,但竟然還是得不到正解
可見還有第二個 bug 存在,我想我的數論真的該重新建立了
只是很大的質數就造成這樣的結果
我想大整數就應該會爆掉吧
我一直想要運用最少的記憶體資源來跑這個程式
不過想要加上 UI 之後我知道我的想法不太可能實現了
而且如果是大整數運算,應該更不可能了
嘛
先把目前沒找出來的 bug 給找到再談大整數這個問題吧
搞不好這個 bug 會讓我把副程式整個改寫掉也說不定
也就是說,說不定目前 debug 的副程式本身就是個 bug
真正的 bug 不是編譯器顯示出來的 error 或是 warning
而是編譯明明就成功,但是執行結果卻不是想要的結果
嘛
我想明天我臉上一定會跑出又黑又紫的眼袋出來
這樣子我哪敢上台報告阿阿阿阿~ (掩面狂奔)
不過燈一關投影片一播誰還會注意我的眼袋阿,真是的 (毆)
但是真的再不睡覺難保證我會在台上說出什麼蠢話來…
so… 20分鐘之後晚安拉~
恩哈
這兩週一直在寫一個程式
寫得頭昏眼花腦脹脹的
為什麼要寫程式勒
我只是想要證明在我畢業之時我還有獨立寫出有用的程式來
就算大學再怎麼鬼混,起碼還有一點寫程式能力
而題目就是 a^(-1) mod n
若只是單純求餘數的話,程式碼只要
a = a % n;
cout << a;
但是很不幸的今天題目是要解 a 的反元素的餘數
所以難度上升很多
但也還在我能寫出來的範圍之內
基本上在運算過程中
有很多都是數學公式
而只要是「公式」要用程式寫出來就不會很難
因為公式是固定的,不會有變化才叫做公式
目前我最大的難關就在於不是公式的地方要怎麼用程式碼去執行運算才能使程式解題的速度快
不知道這麼說會不會繞舌耶
簡單說
bool 公式;
if (公式)
cout << "無須擔心怎麼寫,因為公式本身就有邏輯與條件存在" << endl;
else {
cout << "怎麼寫才能使程式跑得快" << endl;
cout << "怎麼寫才不會有例外的情形" << endl;
cout << "etc." << endl;
}
例如說
int a, i, n;
cout << "a^i mod n" << endl;
cout << "input a, i, n :" << endl;
cin >> a; //a = 9
cin >> i; //i = 30
cin >> n; //n = 26
問題就來了阿
9 的 30 次方這麼大的數字不可能一次就能算出來的
一定要將 30 次方拆成多組來多次運算才行
可是拆太多組程式會因為跑太次而變慢
但是拆不夠細又會使 int 溢位
所以要怎麼拆才能兩樣都兼顧呢?
如果是人來解的話就不會有這個問題
因為人的暫存器可以無限擴張
但是今天我要用程式來運算阿!
像這類問題真的很困擾人
嘛
相信我一定能解決這問題的
不然程式就沒有看見太陽的那一天了
嘛
前文有說到想要證明畢業之時還有一點寫程式的能力
老師說︰「出去外面應徵工作不要輕易說自己會寫程式」
我還蠻認同這句話的
即使是寫程式,也有分很多個領域
在這個程式寫完之後,我想學習 Java
用 Java 寫出個視窗來執行這個程式
嘛,不然用 C++ 也行
anyway, 就是這個程式寫完之後要寫個視窗來包裝就對了
我從來沒寫過視窗程式,所以這將會是一個挑戰
人生就是不斷面臨挑戰與不斷地撞牆
嘛
好像不知不覺離題了
趕緊回來 (跳一下)
最怕就是剛說出自己會寫程式的時候,對方主管就搬出電腦來現場要求寫個程式
我會寫程式,但不怎麼厲害就是了
我很有自知之明,所以我絕不會去誇大炫耀這方面
而且有另外一個老師如是說︰「程式只是一個工具,腦袋裡有多少東西才是重點」
我也很認同這句話
就像是微積分,如果沒有遇到問題時,微積分這項工具根本用不上
但是遇到問題時,解不解的出來就看微積分這項工具磨得是否鋒利了
同理
程式寫得好不好單純看的是工程師的功力
但是只會寫程式而腦子裡卻沒有其他東西是絕對寫不出好的程式
例如目前我現在正在做的 a^(-1) mod n 這項程式
如果對於數學不好的人可能會很傷腦筋
再說有很多專業方面的東西可以被寫成程式
所以重點在於專業知識夠不夠,程式只是個工具
嘛
那我的專業在哪裡…
老實說我還真不知道耶…
雖然一年級到三年級都拼命在修通訊方面的課
但是感覺沒有學得很好
有點糟糕的感覺
我並沒有亂修課阿阿阿阿~
今日就這樣很爛的結尾吧
警告:
內含強烈情緒化字眼,不喜勿入!
近日一直在學 VB2008 與 SQL Server,
終於又遇到 bug 了...
在 VB 偵錯後發現老灰仔有三項參數未指定引數,
但是不知從何改起的老灰仔只能上網搜尋,
其中找到微軟 msdn 網站有一篇相關說明,
內容:『若要更正這個錯誤,將引數提供給指定的參數』
靠... 他娘親的...
誰都知道把引數提供給指定的參數就能解決這隻蟲,
就是不知道才來問,給這種回應是怎樣
難怪本篇評分指數半顆星都沒有
再爛的答案都有半顆星,你他娘親的分明就是濫竽充數,
為了有相關文件不得已才做的
爛透了!
© Blogger templates Newspaper II by Ourblogtemplates.com 2008
Back to TOP