[问题] 写一段进位转换的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