当前位置:   article > 正文

问题 B: DS队列+堆栈--数制转换_b:ds

b:ds

问题 B: DS队列+堆栈–数制转换
时间限制: 1 Sec 内存限制: 128 MB

题目描述
对于任意十进制数转换为k进制,包括整数部分和小数部分转换。整数部分采用除k求余法,小数部分采用乘k取整法例如x=19.125,求2进制转换
整数部分19, 小数部分0.125
19 / 2 = 9 … 1 0.125 * 2 = 0.25 … 0
9 / 2 = 4 … 1 0.25 * 2 = 0.5 … 0
4 / 2 = 2 … 0 0.5 * 2 = 1 … 1
2 / 2 = 1 … 0
1 / 2 = 0 … 1
所以整数部分转为 10011,小数部分转为0.001,合起来为10011.001
提示整数部分可用堆栈,小数部分可用队列实现
注意:必须按照上述方法来实现数制转换,其他方法0分
输入
第一行输入一个t,表示下面将有t组测试数据。
接下来每行包含两个参数n和k,n表示要转换的数值,可能是非整数;k表示要转换的数制,1<k<=16

输出
对于每一组测试数据,每行输出转换后的结果,结果精度到小数点后3位.

样例输入
4
19.125 2
15.125 16
84.7866 3
325.9999 13
样例输出
10011.001
F.200
10010.210
1C0.CCC
提示

例如:十进制数254.3879转换为6进制数。

整数部分254

254 / 6 = 42 … 2

42 / 6 = 7 … 0

7 / 6 = 1 … 1

1 / 6 = 0 … 1

小数部分0.3879

0.3879 * 6 = 2.3274 … 2

0.3274 * 6 = 1.9644 … 1

0.9644 * 6 = 5.7864 … 5

所以整数部分转为 1102,小数部分转为0.215,转换后的6进制数合起来为1102.215

#include<iostream>
#include<stack>
#include<queue>
using namespace std;

const char f[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };

queue<char> Myqe;
stack<char> myst;

void sol(double item,int i2)
{
	int k = i2;
	int zheng;
	double xiao;
	for (int i = 0; i < 2; i++)
	{
		zheng = (int)item;
		xiao = item - zheng;
		//cout << zheng << " " << xiao << endl;
	}
		int yu;
		while (zheng)
		{
			yu = zheng % k;
			myst.push(f[yu]);
			zheng /= k;
		}
		for (int j = 0; j < 3; j++)
		{
			int z;
			z = xiao * k;
			xiao = xiao * k - z;
			Myqe.push(f[z]);
		}
		while (myst.size())
		{
			cout << myst.top();
			myst.pop();
		}
		cout << ".";
		while (Myqe.size())
		{
			cout << Myqe.front();
			Myqe.pop();
		}
		cout << endl;
}

int main()
{
	int t;
	cin >> t;
	while (t--)
	{
		double number;
		int k;
		//for (int i = 0; i < 2; i++)
		//{
			cin >> number >> k;
			sol(number, k);
		//}
		
	}
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号