作者UCDaLanJiao (UCD艾伦吉奥)
看板C_and_CPP
标题[问题] 写一段进位转换的code
时间Tue Mar 29 11:38:42 2016
开发平台(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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1459222725.A.2F7.html
1F:推 WBTs: 就照你说的先转成10进位,在用递回像 03/29 12:37
2F:→ WBTs: void printc(int c){ 03/29 12:37
3F:→ WBTs: 把c换成字元再输出 03/29 12:37
4F:→ WBTs: } 03/29 12:38
5F:→ WBTs: void prin(int x,int y){ /*x为10进位的数,y为欲换成的进 03/29 12:38
6F:→ WBTs: 位*/ 03/29 12:38
7F:→ WBTs: if(x>=y){ 03/29 12:38
8F:→ WBTs: prin(x/y) ; 03/29 12:38
9F:→ WBTs: printc(x%y); 03/29 12:38
10F:→ WBTs: } 03/29 12:38
11F:→ WBTs: } 03/29 12:38
12F:推 WBTs: 写错,if那要改成!=0 03/29 12:55
13F:→ UCDaLanJiao: 换成10进位的code 也不会... 03/29 13:42
14F:推 WBTs: 字串存的输入的数算长度作回圈,算每一位数乘该位的数基的 03/29 14:03
15F:→ WBTs: 次方累加就好啦。 03/29 14:03
16F:推 WBTs: if(x!=0) prin(x/y,y) 2处错误更正 03/29 17:26
17F:推 LPH66: 还是那句老话, 如果发觉转成程式有困难请画流程图 03/29 18:55
18F:→ LPH66: 对流程图中的某个大步骤有困难就拆小步一点另外画出来 03/29 18:57
19F:→ LPH66: 一直到每个小步都可以用程式语言叙述时你的程式就完成了 03/29 18:57
20F:→ LPH66: 过程中这个「另外画出来」的部份也会很自然的成为函数呼叫 03/29 18:58
21F:→ LPH66: 光看别人说这要怎麽写是没办法学到如何拆解问题的心法的 03/29 18:59
22F:→ LPH66: >WBTs 给新手不要用递回函式...那可是数归等级的东西 03/29 19:00
23F:→ LPH66: 除非对抽象思考很有概念, 不然给这种东西只会让新手更乱 03/29 19:01
24F:→ UCDaLanJiao: 嗯嗯 感谢。我再试试看 03/29 23:07
26F:→ UCDaLanJiao: 10转成any base写出来了。但怎麽转成10不会 03/30 00:54
27F:→ fatrabitree: 转成10就一个位数一个位数乘base的次方 03/30 00:59
28F:→ UCDaLanJiao: Cin的algorithm 很笨不会写..用string和while loop 03/30 01:55
29F:→ UCDaLanJiao: 吗? 03/30 01:56
30F:推 WBTs: 我有寄站内信给你去参考一下吧 03/30 02:00