看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) c++ 問題(Question): 我想用c++ 寫一段 code 可以把任一個進位(base) 轉成 任一個進位的數 (convert a number from one base to another) 可互相轉換的進位範圍(base) 從 2 到 36 轉換之後的兩位數 10 到 35 則轉成 A 到 Z 字母表示 餵入的資料(Input): input:1.輸入一個數的進位(base) : 6 2.以及這個數在這個進位的表示方式: 405 3. 一個新的進位(new base): 19 ( 一個 6進位的數 405 用 19進位表示 ) 預期的正確結果(Expected Output): output: 7G 錯誤結果(Wrong Output): 數學上都會轉 但是寫成code 的過程很笨 程式碼(Code):(請善用置底文網頁, 記得排版) 因為 code 實在不太懂怎麼下手 我的想法是要不要先把 舊的數轉成10 進位之後 再寫成 新的進位 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 107.0.114.147 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1459222725.A.2F7.html
WBTs: 就照你說的先轉成10進位,在用遞迴像 03/29 12:37
WBTs: void printc(int c){ 03/29 12:37
WBTs: 把c換成字元再輸出 03/29 12:37
WBTs: } 03/29 12:38
WBTs: void prin(int x,int y){ /*x為10進位的數,y為欲換成的進 03/29 12:38
WBTs: 位*/ 03/29 12:38
WBTs: if(x>=y){ 03/29 12:38
WBTs: prin(x/y) ; 03/29 12:38
WBTs: printc(x%y); 03/29 12:38
WBTs: } 03/29 12:38
WBTs: } 03/29 12:38
WBTs: 寫錯,if那要改成!=0 03/29 12:55
UCDaLanJiao: 換成10進位的code 也不會... 03/29 13:42
WBTs: 字串存的輸入的數算長度作迴圈,算每一位數乘該位的數基的 03/29 14:03
WBTs: 次方累加就好啦。 03/29 14:03
WBTs: if(x!=0) prin(x/y,y) 2處錯誤更正 03/29 17:26
LPH66: 還是那句老話, 如果發覺轉成程式有困難請畫流程圖 03/29 18:55
LPH66: 對流程圖中的某個大步驟有困難就拆小步一點另外畫出來 03/29 18:57
LPH66: 一直到每個小步都可以用程式語言敘述時你的程式就完成了 03/29 18:57
LPH66: 過程中這個「另外畫出來」的部份也會很自然的成為函數呼叫 03/29 18:58
LPH66: 光看別人說這要怎麼寫是沒辦法學到如何拆解問題的心法的 03/29 18:59
LPH66: >WBTs 給新手不要用遞迴函式...那可是數歸等級的東西 03/29 19:00
LPH66: 除非對抽象思考很有概念, 不然給這種東西只會讓新手更亂 03/29 19:01
UCDaLanJiao: 嗯嗯 感謝。我再試試看 03/29 23:07
UCDaLanJiao: http://i.imgur.com/7v9ftCa.jpg 03/30 00:53
UCDaLanJiao: 10轉成any base寫出來了。但怎麼轉成10不會 03/30 00:54
fatrabitree: 轉成10就一個位數一個位數乘base的次方 03/30 00:59
UCDaLanJiao: Cin的algorithm 很笨不會寫..用string和while loop 03/30 01:55
UCDaLanJiao: 嗎? 03/30 01:56
WBTs: 我有寄站內信給你去參考一下吧 03/30 02:00