Re: [問題] uva 10295 Hay Points

看板C_and_CPP (C/C++)作者 (蒼穹之下任我行)時間10年前 (2015/09/13 22:15), 10年前編輯推噓0(006)
留言6則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《mayday24 (青春之後 認輸之前)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : C++ : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : 無 : 問題(Question): : https://uva.onlinejudge.org/external/102/10295.pdf : 餵入的資料(Input): : sample input : 預期的正確結果(Expected Output): : 和sample output相同 : 錯誤結果(Wrong Output): : uva wrong answer : 程式碼(Code):(請善用置底文網頁, 記得排版) : http://ideone.com/abeRBD : 補充說明(Supplement): 老實說, 直接貼一串完全沒有註解的程式, 很難看出哪段是要做什麼 好歹像下面的程式一樣, 寫標註一下那一段或是接下來是在做什麼事情吧 #include <iostream> #include <fstream> #include <string> int main(int argc, char* argv[]) { // 確認執行輸入檔的參數 if(argc != 2) { std::cerr << "Require one input file." << std::endl; return 1; } // 開啟輸入檔 std::ifstream input(argv[1]); if(!input.is_open()) { std::cerr << "Error: cannot oopen file: " << argv[1] << std::endl; return 1; } int dict_length = 0; // 規格裡的 m int description_count = 0; // 規格裡的 n input >> dict_length; // 讀入 m input >> description_count; // 讀入 n std::string dict[dict_length]; // 用來存 dictionary的words int value[dict_length]; // 用來存對應的value // 讀入word跟value for(size_t i=0; i < dict_length; i++) { input >> dict[i]; input >> value[i]; } // 用來存讀入的job descriptions std::string descriptions[description_count]; // 讀入並處理job descriptions for(size_t i=0; i < description_count; i++) { std::string tmp; while(getline(input, tmp)) { if(tmp[0] != '.') { descriptions[i].append(tmp.append(" ")); } else { break; } } } // 檔案沒有要再用了, 關閉它 input.close(); // 用來存salary int salary[description_count]; // 處理/判斷salary for(size_t i=0; i<description_count; i++) { salary[i] = 0; std::string process_desc = descriptions[i]; int word_pos = process_desc.find(" "); while(word_pos >= 0) { // 切開job descriptions裡的每個word std::string check_string = process_desc.substr(0, word_pos); process_desc = process_desc.substr(word_pos+1, process_desc.size()); // 比對有沒有在dictionary裡, 有就加上value for(size_t j=0; j < dict_length; j++) { if(check_string.compare(dict[j]) == 0) { salary[i] += value[j]; break; } } // 找下一個word word_pos = process_desc.find(" "); } } // output for(size_t i = 0; i < description_count; i++) { std::cout << salary[i] << std::endl; } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.244.41.5 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1442153735.A.BF4.html ※ 編輯: yichen (60.244.41.5), 09/13/2015 22:40:32

09/13 22:45, , 1F
imho, 有一半以上的註解是多餘的... 很多時候可以把
09/13 22:45, 1F

09/13 22:46, , 2F
code 寫得self-descriptive,就可以避免大量無謂註解
09/13 22:46, 2F

09/13 22:51, , 3F
英文註解 is better 然後同意樓上
09/13 22:51, 3F

09/13 22:52, , 4F
我完全同意, 但是要寫在版上問人, 最好還是註解一下某部份
09/13 22:52, 4F

09/13 22:54, , 5F
的意圖, 或是自己本身的想法, 這樣別人比較好幫忙debug啦
09/13 22:54, 5F

09/13 23:00, , 6F
抱歉 有重新加上一些註解了
09/13 23:00, 6F
文章代碼(AID): #1LzOK7lq (C_and_CPP)
文章代碼(AID): #1LzOK7lq (C_and_CPP)