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

看板C_and_CPP作者 (UCD艾倫吉奧)時間9年前 (2016/03/29 03:38), 編輯推噓6(6024)
留言30則, 4人參與, 最新討論串1/1
開發平台(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

03/29 12:37, , 1F
就照你說的先轉成10進位,在用遞迴像
03/29 12:37, 1F

03/29 12:37, , 2F
void printc(int c){
03/29 12:37, 2F

03/29 12:37, , 3F
把c換成字元再輸出
03/29 12:37, 3F

03/29 12:38, , 4F
}
03/29 12:38, 4F

03/29 12:38, , 5F
void prin(int x,int y){ /*x為10進位的數,y為欲換成的進
03/29 12:38, 5F

03/29 12:38, , 6F
位*/
03/29 12:38, 6F

03/29 12:38, , 7F
if(x>=y){
03/29 12:38, 7F

03/29 12:38, , 8F
prin(x/y) ;
03/29 12:38, 8F

03/29 12:38, , 9F
printc(x%y);
03/29 12:38, 9F

03/29 12:38, , 10F
}
03/29 12:38, 10F

03/29 12:38, , 11F
}
03/29 12:38, 11F

03/29 12:55, , 12F
寫錯,if那要改成!=0
03/29 12:55, 12F

03/29 13:42, , 13F
換成10進位的code 也不會...
03/29 13:42, 13F

03/29 14:03, , 14F
字串存的輸入的數算長度作迴圈,算每一位數乘該位的數基的
03/29 14:03, 14F

03/29 14:03, , 15F
次方累加就好啦。
03/29 14:03, 15F

03/29 17:26, , 16F
if(x!=0) prin(x/y,y) 2處錯誤更正
03/29 17:26, 16F

03/29 18:55, , 17F
還是那句老話, 如果發覺轉成程式有困難請畫流程圖
03/29 18:55, 17F

03/29 18:57, , 18F
對流程圖中的某個大步驟有困難就拆小步一點另外畫出來
03/29 18:57, 18F

03/29 18:57, , 19F
一直到每個小步都可以用程式語言敘述時你的程式就完成了
03/29 18:57, 19F

03/29 18:58, , 20F
過程中這個「另外畫出來」的部份也會很自然的成為函數呼叫
03/29 18:58, 20F

03/29 18:59, , 21F
光看別人說這要怎麼寫是沒辦法學到如何拆解問題的心法的
03/29 18:59, 21F

03/29 19:00, , 22F
>WBTs 給新手不要用遞迴函式...那可是數歸等級的東西
03/29 19:00, 22F

03/29 19:01, , 23F
除非對抽象思考很有概念, 不然給這種東西只會讓新手更亂
03/29 19:01, 23F

03/29 23:07, , 24F
嗯嗯 感謝。我再試試看
03/29 23:07, 24F

03/30 00:53, , 25F

03/30 00:54, , 26F
10轉成any base寫出來了。但怎麼轉成10不會
03/30 00:54, 26F

03/30 00:59, , 27F
轉成10就一個位數一個位數乘base的次方
03/30 00:59, 27F

03/30 01:55, , 28F
Cin的algorithm 很笨不會寫..用string和while loop
03/30 01:55, 28F

03/30 01:56, , 29F
嗎?
03/30 01:56, 29F

03/30 02:00, , 30F
我有寄站內信給你去參考一下吧
03/30 02:00, 30F
文章代碼(AID): #1M-VZ5Bt (C_and_CPP)