原本的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
#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
透過店員介紹
真的會大為改觀
沒有留言:
張貼留言