[C++] 期中考詳細參考答案

參考程式碼如下: int caluScore(string &answer, int rightScore, int unansweredScore, int wrongScore) { string reply; getline(cin,reply); int score = 0; int length = reply.size(); for (int i=0;i<length;i++) { if (reply[i] == '.') break; if (reply[i] == ' ') score += unansweredScore; else if (reply[i] == answer[i]) score += rightScore; // means wrong else score += wrongScore; } if (score>100) score = 100; if (score<0) score = 0; return score; } ps 不太懂為什麼題目要傳參 &answer...

December 7, 2020 · 3 min · CPP

[Python] 轉移矩陣

以功能來介紹: 將一維資料轉成二維矩陣 ( makeMatrix ) 將一維資料轉成一行的座標 (makeCoordinate) 轉換轉置矩陣 ( transpose ) 計算行列式 ( determinant ) 計算反矩陣 ( inverse ) 矩陣乘法 ( matrixMutiple ) 轉換基底 ( changeBasis ) def makeMatrix(m) : length = len(m) size = int( length**(1/2) ) matrix = [] for i in range(size) : newRow = [] for j in range(size) : newRow.append(m[i*size+j]) matrix.append(newRow) return matrix def makeCoordinate(m) : length = len(m) matrix = [] for row in range(length) : newRow = [m[row]] matrix....

December 7, 2020 · 2 min · CPP

[C++] NCYU 課堂練習10

請不要直接抄寫程式碼! 也請不要直接跳到程式碼部分,除非你已經寫好了,想要參考別人的寫法! 第二題 此次解題用到 STL 中的 set , 需要引入 <set> 這個函式庫 set 意思是 集合 , C++ 中的 set 跟數學上的 集合 很像 set 中不會有重複的元素 但是 set 會自動由小到大排序 STL 中有一個 find 函式,意思就是尋找該容器中是否存在這個數值,回傳值為 iterator 其他就是單純邏輯運算 查詢 <algorithm> 函式庫,會有意想不到的答案 ※ 雖然 set 很好用,但是對於 C++ 初學者較難理解,所以先用 array 實作 set 看看喔! 程式碼大概如下: #include <iostream> #include <set> using namespace std; void printAnd(set<int> a, set<int> b); void printOr(set<int> a, set<int> b); void printNot(set<int> a, set<int> b); void printXor(set<int> a, set<int> b); void printSet(set<int> a); int main() { set<int> setA; set<int> setB; int a,b; cin>>a>>b; for (int i=0;i<a;i++) { int temp; cin>>temp; setA....

November 27, 2020 · 2 min · CPP

[C++] NCYU 回家功課16

請不要直接抄寫程式碼! 也請不要直接跳到程式碼部分,除非你已經寫好了,想要參考別人的寫法! 回家功課16 以 ^Z 結束輸出 (測資可能有很多行),不是 ^Z 的話就把輸入進來的字串 temp 加進 sentence 裡 最後要處理的字串為 sentence , temp 只是暫時拿來輸入的變數 (temporary) 宣告長度為 26 的陣列,並初始化為 0 (因為不分大小寫的字母有 26 個) 第 0 個代表 A 或 a 、第 1 個代表 B 或 b . . . 以此類推 用 for 迴圈遍歷 sentence 的每一個字元,分成大寫、小寫和其他 用 ASCII 判斷,如果是大寫就 alphabet[sentence[i]-'A']++; 舉例:當 sentence[10] 為 F (ACSII:70) 剪掉 A (ASCII:65) 會等於 5 ,則 alphabet[5] 會 +1 小寫以此類推 其他符號或空格則不考慮,跳過 (continue) 判斷最大值與記錄位置,就把 alphabet 這陣列遍歷過就行了 程式碼大概如下:...

November 27, 2020 · 1 min · CPP

[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