[問題] 寫一段進位轉換的code

作者: UCDaLanJiao (UC大懶覺)   2016-03-29 11:38:42
開發平台(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):
作者: WBTs (加權平衡樹)   2016-03-29 12:37:00
就照你說的先轉成10進位,在用遞迴像void printc(int c){把c換成字元再輸出}void prin(int x,int y){ /*x為10進位的數,y為欲換成的進位*/if(x>=y){prin(x/y) ;printc(x%y);}}寫錯,if那要改成!=0
作者: UCDaLanJiao (UC大懶覺)   2016-03-29 13:42:00
換成10進位的code 也不會...
作者: WBTs (加權平衡樹)   2016-03-29 14:03:00
字串存的輸入的數算長度作迴圈,算每一位數乘該位的數基的次方累加就好啦。if(x!=0) prin(x/y,y) 2處錯誤更正
作者: LPH66 (-6.2598534e+18f)   2016-03-29 18:55:00
還是那句老話, 如果發覺轉成程式有困難請畫流程圖對流程圖中的某個大步驟有困難就拆小步一點另外畫出來一直到每個小步都可以用程式語言敘述時你的程式就完成了過程中這個「另外畫出來」的部份也會很自然的成為函數呼叫光看別人說這要怎麼寫是沒辦法學到如何拆解問題的心法的>WBTs 給新手不要用遞迴函式...那可是數歸等級的東西除非對抽象思考很有概念, 不然給這種東西只會讓新手更亂
作者: UCDaLanJiao (UC大懶覺)   2016-03-29 23:07:00
嗯嗯 感謝。我再試試看http://i.imgur.com/7v9ftCa.jpg10轉成any base寫出來了。但怎麼轉成10不會
作者: fatrabitree (胖兔子)   2016-03-30 00:59:00
轉成10就一個位數一個位數乘base的次方
作者: UCDaLanJiao (UC大懶覺)   2016-03-30 01:55:00
Cin的algorithm 很笨不會寫..用string和while loop嗎?
作者: WBTs (加權平衡樹)   2016-03-30 02:00:00
我有寄站內信給你去參考一下吧

Links booklink

Contact Us: admin [ a t ] ucptt.com