如何求一个double 型数据的 为数 ???高手请进??
我在做ACM1001的时候被一个问题给难到了
它给了五个数 但是我却不知道怎么样求出他们的长度来??
那为大哥帮帮忙哦??写个小的程序来 ??
数据是:
95.123
0.4321
5.1234
6.7592
98.999
1.0100
[解决办法]
看了一下那道题,我觉得题目已经提示用string 来存贮浮点数
所以可以试试自己写一个string的类,重载一下成方的操作符,使第一个数是string第二个数是int返回string,就是一位一位的乘,数据不是很大,应该不会超时的
[解决办法]
用string或char【】读入不就得了
附上我的源代码参考一下吧
#include <iostream>
#include <string>
using namespace std;
int main()
{
int k;
string s;
while(cin> > s> > k)
{
int n[1000]={0},p=0,point=0;
for(int i=s.size()-1;i> =0;i--)
{
if(s[i]== '. ')
point=s.size()-i-1;
else
{
n[p]=s[i]- '0 ';
p++;
}
}
bool zero=true;
for(int oo=0;oo <1000;oo++)
if(n[oo]!=0)
zero=false;
if(zero)
{
cout < <0 < <endl;
continue;
}
int po=point;
point=0;
int m1[1000]={1},m2[1000]={1};
int *p1=m1,*p2=m2;
for(int l=0;l <k;l++)
{
point+=po;
memset(p2,0,1000);
for(int j=0;j <500;j++)
for(int i=0;i <500;i++)
p2[i+j]+=n[j]*p1[i];
for(int m=0;m <999;m++)
{
//if(p2[m]> 10)
{
p2[m+1]+=p2[m]/10;
p2[m]=p2[m]-p2[m]/10*10;
}
}
int *p=p1;
p1=p2;
p2=p;
}
int z1=0,z2=0;
for(z1=0;z1 <1000&&p1[z1]==0;z1++);
for(z2=999;z2> =0&&p1[z2]==0;z2--);
if(z2 <=point)
z2=point;
if(z1> =point)
z1=point;
for(int o=z2;o> =z1;o--)
{
if(o==z2&&p1[o]==0)
;
else
cout < <p1[o];
if(o==point&&o!=0&&o!=z1)
cout < < '. ';
}
cout < <endl;
}
return 0;
}
怎么double 型数据的 为数 ?
如何求一个double 型数据的 为数???高手请进??我在做ACM1001的时候被一个问题给难到了它给了五个数但是我
