[C++] 進制轉換 Part 2

這次是把 etutor 的作業做延伸, 並且用 STL 中的 map 實作! 上一次是用 vector 來實作 延伸閱讀:C++ 進制轉換 map map 的概念就是 映射 由數個數對構成 數對是以 key : value 的形式存在 任一 key 可對到其 value 同一個 key 不會有不同 value ,像是 函數 定義 ※ 因為程式碼有高度重複性,所以就貼一部分而已 程式碼大概如下: 使用 map 建表 map<string, string> dicHex = { {"0", "0000"}, {"1", "0001"}, {"2", "0010"}, {"3", "0011"}, {"4", "0100"}, {"5", "0101"}, {"6", "0110"}, {"7", "0111"}, {"8", "1000"}, {"9", "1001"}, {"a", "1010"}, {"b", "1011"}, {"c", "1100"}, {"d", "1101"}, {"e", "1110"}, {"f", "1111"}, {"A", "1010"}, {"B", "1011"}, {"C", "1100"}, {"D", "1101"}, {"E", "1110"}, {"F", "1111"}, {"0000", "0"}, {"0001", "1"}, {"0010", "2"}, {"0011", "3"}, {"0100", "4"}, {"0101", "5"}, {"0110", "6"}, {"0111", "7"}, {"1000", "8"}, {"1001", "9"}, {"1010", "a"}, {"1011", "b"}, {"1100", "c"}, {"1101", "d"}, {"1110", "e"}, {"1111", "f"} }; 確認數字是否為有效的 (有 checkBin 、 checkOct 、 checkHex) bool checkBin(string number) { int length = number....

November 18, 2020 · 4 min · CPP

[介紹] 線上解題系統 OnlineJudge

簡介 Online Judge 通常會簡稱 Judge 或者是 OJ 。 那 Judge 是什麼呢? 你可以想成它是一個練習 程式解題 的平臺, 有 題目敘述 、 輸入 、 輸出 , 有時候甚至還會有 測資限制 或是 時間限制 ! 什麼是程式呢? 就是把生活中遇到的問題, 嘗試用數學、邏輯,甚至是演算法,將問題簡單化! 個人認為解題就有點呆板了! 因為輸入、輸出,已經被限制了, 所以產生的程式可能大同小異, 或者是不用某種特定方法就逾時(後面會介紹),解不出來 . . . 推薦的 Online Judge TCGS Green Judge 臺中女中程式解題系統 此 Judge 是由臺中女中所架的,掛在 tcgs.tc.edu.tw 的 Domain Name 上。 題目分類清楚 若基礎題庫的五十題做完,就有一定的程式基礎囉! ZeroJudge 高中生程式解題系統 較 Green Judge , ZeroJudge 的題目分類較雜亂 可以利用 章魚教學網站 的題庫分類系統,來選取自己需要練習的題型(左邊選單 –> 資訊學科培訓 –> zerojudge 題目分類) 如果你的英文很好,再來的資源很適合你!...

November 7, 2020 · 1 min · CPP

[C++] 期中考第三題

期中考第三題:兌換瓶子 每 7 個喝完的瓶子,可以再兌換一瓶 drink 代表還沒喝的,bottle 代表喝完的瓶子 先把一開始的飲料都喝完 int bottle = drink; 如果一開始的飲料大於等於 7 瓶,就繼續兌換(while 迴圈) 每兌換一次就喝掉 1 瓶,兌換 n 次就喝掉 n 瓶 把上一次喝掉的瓶子跟不足兌換的瓶子收集起來,再拿去兌換 最後不夠兌換(瓶子< 7),就結束了(跳出 while 迴圈) 這時候的 bottle 就會是全部喝完的瓶子 TCGS Judge 類似題目:TCGS a041:收集冰棒棍 #include <iostream> using namespace std; int main() { int drink; while(cin>>drink){ int bottle = drink; while(drink >= 7){ bottle += drink/7; drink = drink/7 + drink%7; } cout<<bottle<<endl; } }

November 6, 2020 · 1 min · CPP

[C++] 期中考第二題

期中考第二題:提款卡密碼 a b c d . . . 照順序排序,計算他們相間的距離 將上述做法具現化,可以利用 ASCII 將兩字元的 ASCII 相減,就是他們之間的距離 因為差有可能為負,且距離不為負,所以加上 <cmath> 的 abs() 絕對值 超過 9 之後,則取個位數字,可以利用 % 來實現 ASCII 欲做運算需將它轉形態(cast),所以利用 int 轉為整數形態 for 迴圈遍歷 word 中每一個字元,且索引 i 與 i+1 的值 注意上述做法 i 會跑到 < length-1 ZeroJudge 類似題目:Zerojudge a065:提款卡密碼 參考程式碼: #include <iostream> #include <cmath> using namespace std; int main() { string word; cin>>word; int length = word.size(); for(int i=0;i<length-1;i++){ cout<<int ( abs(word[i+1]-word[i]) ) % 10; } cout<<endl; }

November 6, 2020 · 1 min · CPP

[C++] 進制轉換

可能是因為高中課業繁忙吧,當初覺得 STL 對我來說太多餘了, 所以就沒興趣學了,也就放掉了。 這次重拾 STL ,先從簡單的 vector 來練練手, 並用進制轉換當做主題! ※ STL 是 Standrad Template Library 的縮寫 十進位轉二進位: 以二進位定義計算 並將每次的結果插入 vector 的起點(後面解釋為什麼是 insert ) 傳入:整數(int) 回傳:陣列(vector) vector<int> baseBinary(int number){ vector<int> result; vector<int>::iterator it; while(number>0){ it = result.begin(); if (number%2==0) result.insert(it,0); else result.insert(it,1); number /= 2; } return result; } 印出二進位: 因為二進位算完後,答案是結果往前推,所以用的是 insert 這樣一來陣列遍歷就從 begin 就好了 iterator 有點像是 for vector 的 指標 ,想要知道其中的值要 取值 (*) 傳入:陣列(vector) 回傳:無(void) void print(vector<int> number){ vector<int>::iterator it; for(it=number....

November 4, 2020 · 1 min · CPP