浮点数加法

问题 C: 浮点数加法

时间限制: 1 Sec   内存限制: 32 MB

题目描述

求2个浮点数相加的和
题目中输入输出中出现浮点数都有如下的形式:
P1P2...Pi.Q1Q2...Qj
对于整数部分,P1P2...Pi是一个非负整数
对于小数部分,Qj不等于0

输入

对于每组案例,第1行是测试数据的组数n,每组测试数据占2行,分别是两个加数。
每组测试数据之间有一个空行,每行数据不超过100个字符

输出

每组案例是n行,每组测试数据有一行输出是相应的和。
输出保证一定是一个小数部分不为0的浮点数

样例输入

2
3.756
90.564

4543.5435
43.25

样例输出

94.32
4586.7935
#include
#include
#include
#include
using namespace std;

struct bign
{
	int d[1005];
	int len;
	bign()
	{
		memset(d,0,sizeof(d));
		len=0;
	}
};

bign change(char str[],int num)
{
	bign a;
	int i,flag=0;
	a.len=strlen(str)-1;
	for(i=0;i=lower_bound;i--)
	{
		printf("%d",a.d[i]);
		if(i==dot)
			putchar('.');
	}
	putchar('\n');
}

int main()
{
	int n; 
	scanf("%d",&n);
	while(n--)
	{
		int i,len1,len2,dot1,dot2,dot;
		char str1[150]={0},str2[150]={0};
		bign a,b;
		getchar();
		gets(str1);
		gets(str2);
		len1=strlen(str1);
		len2=strlen(str2);
		for(i=len1-1;str1[i]!='.';i--)
			;
		dot1=len1-i;
		for(i=len2-1;str2[i]!='.';i--)
			;
		dot2=len2-i;
		if(dot1>=dot2)
		{
			a=change(str1,0);
			b=change(str2,dot1-dot2);
		}
		else
		{
			a=change(str1,dot2-dot1);
			b=change(str2,0);
		}		
		dot=max(dot1,dot2)-1;
		print(add(a,b),dot);
	}
	return 0;
}




你可能感兴趣的:(大数运算,大数加法)