2009年1月2日 星期五

期末專題&大回顧

期末專題:

原本的bcb專題是打算寫踩地雷的

但越寫越挫折發現很多地方還需要時間去了解

而剩餘的時間並不是很多所以我換了個題目寫

題目換成十進位轉換系統

而系統的功能是可以將十進位轉換成二、三、四、五、.......至十六進位

原本想說只是轉換進位並不是什麼難事

但是開始寫後卻發現大有問題

一開始很順利的寫出2進位的轉換

但輸出結果卻是反過來的

需要Reverse結果才會正確

花了些時間最後終於想出

設一個temp來轉換

再來就是10進位以上到16進位

超過10需要以A=10,B=11,C=12,D=13.....到F=15

用if會有問題產生

改了很久後而改成else if才解決了問題

而程式可以完整跑完後

要進行第二次卻發現又是一個大問題

輸出結果的地方累加了

例如一開始的輸出結果是101010

而輸入新的數字後

第二次的結果應該是01

結果壓下確認鍵後

兩次的輸出結果疊加變成10101001

而BCB又是新學的東西

想了很久實在是想不出解決的方法

終於上了google搜尋能clear掉Edit裡面資料的指令

諷刺的是.....指令就是Edit->Clear()

而因為需要temp轉換的關係所以打了兩個Clear

才順利的解決這些問題

程式碼如下↓

//---------------------------------------------------------------------------
#include #pragma hdrstop
#include "Unit1.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;TForm1 *Form2;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){ }
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender){ if(Edit1->Text!="") {ComboBox1->Enabled=1;Button2->Enabled=1;}}//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender){
Edit5->Clear();Edit4->Clear();
int a=StrToInt(Edit1->Text),b=StrToInt(ComboBox1->Text);
Edit2->Text=a;Edit3->Text=b;
while(a) {int e=a%b;
if(e==10) Edit4->Text=Edit4->Text+"A";
else if(e==11) Edit4->Text=Edit4->Text+"B";
else if(e==12) Edit4->Text=Edit4->Text+"C";
else if(e==13) Edit4->Text=Edit4->Text+"D";
else if(e==14) Edit4->Text=Edit4->Text+"E";
else if(e==15) Edit4->Text=Edit4->Text+"F";
else Edit4->Text=Edit4->Text+IntToStr(e); a/=b;}
int d=Edit4->Text.Length();
while(d){Edit5->Text=Edit5->Text+Edit4->Text[d];d--;}}//---------------------------------------------------------------------------void __fastcall TForm1::Button4Click(TObject *Sender){ Form1->Close(); }//---------------------------------------------------------------------------void __fastcall TForm1::Button3Click(TObject *Sender){ Form2->Show();}//---------------------------------------------------------------------------

執行圖:






















輸入數字僅能9位因為是宣告int的關係

太大會overload




選擇近位轉換








2進位執行結果





16進位執行結果


圖片似乎不是很清楚所以我有分享在網路硬碟

上面連結連不上的可以去硬碟分享名稱打"BCB進位"







寫完期末專題還真的學到很多東西

可以把C++的程式介面化真的很有成就感

但如果要加成這轉換進位系統的功能

需要將9位數的int稍為調整一下

還有將數字靠右對齊

這兩個部分目前還無法克服

如果老師有看到的話希望能回應一下


----------------------------期末總評-----------------------------

期中成績:

w3--->1A 1B 13C......10+5+16=31
w4--->0A 0B 15C......10*2=20
w5--->2A 1B 12C......20+5+2*7=39
w6--->4A 1B 9C......40+5+5*2=55
w7--->0A 0B 14C......10*2=20
w8.......0A 2B 12C......5*2+2*8=26
平均........31.8分


期中以前我一定要說一下

作業也不是沒教的我一直很納悶怎麼會那麼多C

而心得或是感想打得很少又沒營養的竟然會比我多分數

讓我心得打的非常無力

結果期中心得貼了之後赫然發現原來評分的網址都是貼錯的.......

讓我非常錯愕......



期末成績:

w12--->6A 3B 5C.......69.17
w13--->0A 0B 17C......30
w14--->8A 5B 2C.......83.08
w15--->4A 7B 3C.......70.83
w16--->3A 7B 3C.......68.18
平均:.......64.252


平時總成績(31.8+64.3)/2=48.05 分


----------------------------自評心得與回顧-----------------------------


我給我自己10分

說很白因為分數太低了

不給10分根本不可能過

而且期中以前的粗心真的是導致分數低的主要原因

尤其是期中閱讀賈伯斯

寫的很用心卻都是C

很難過

而當老師說專題好好寫還有機會時

我就盡心盡力的去寫作專題

在這過程中學到很多東西

無論是google尋求解決方法

而這些東西是自己所追求到的

所以分外珍惜及深刻

我想這是老師這種教學的精神所在吧!!


而我在這門課獲得最重大的另一個地方則是對Mac的認識

心得部分之前打過了所以在這也不多說

總之真的認識Mac後很急著想把作業系統更換

而剛從美國回來的哥哥也說

美國人都在用Mac

只有台灣才比較常用window
(雖然他的筆電自己也沒換)

可能真的是因為習慣吧

網咖、家用電腦

從小到大都接觸window誰會去更換成Mac

去一趟apple store

透過店員介紹

真的會大為改觀

沒有留言:

張貼留言