| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:为什么 总是显示出错呢?我运行的结果好像没错啊In Reply To:为什么我的程序结果总是显示出错呢?我运行的结果好像没错啊 Posted by:710817320 at 2010-03-29 08:11:25 > #include <iostream>
> #include <string>
> using namespace std;
>
> int length_a;
> int length_b;
> int length_c=0;
> int length_p=0;
> char * MultiNum(char * a,char * b);
> void ExpNum(char *a,int n);
>
> char * MultiNum(char * a,char * b)
> {
>
> char s1[1000];
>
> int i,j,k=0;
> int flag=0;
> char c;
> int length_pa;//保存a的小数点的位数
>
> length_a=strlen(a);
> length_b=strlen(b);
>
> for(i=0;i<1000;i++)
> {
> s1[i]='0';
> }
>
>
> for (i=0;i<length_a;i++)
> {
> if(a[i]=='.')
> {
> length_a=length_a-1;
> length_p=length_a-i;
> length_pa=length_p;
> while(i<length_a)
> {
> a[i]=a[i+1];
> i++;
> }
> a[i]='\0';
> }
>
> }
>
>
> for (i=0;i<length_b;i++)
> {
> if(b[i]=='.')
> {
> length_b=length_b-1;
> length_p=length_b-i+length_pa;
> while(i<length_b)
> {
> b[i]=b[i+1];
> i++;
> }
> b[i]='\0';
> }
>
> }
>
>
> for (i=0;i<length_a;i++)
> {
>
> k=i;
> flag=0;
> for (j=0;j<length_b;j++)
> {
> c=(a[length_a-i-1]-48)*(b[length_b-j-1]-48)+flag+s1[i+j]-48;
> if (c>=0&&c<10)
> {
> s1[k++]=c+48;
> flag=0;
> }
> if (c>=10)
> {
> flag=c/10;
> c=c%10;
> s1[k++]=c+48;
>
> }
> }
>
> if(flag>0)
> s1[k++]=flag+48;
> }
>
> s1[k]='\0';
> length_c=k;
>
> char *s2=new char[length_c+1];
> if(length_p!=0)//计算结束后,加上小数点
> {
> for(i=0;i<length_c-length_p;i++)
> {
> s1[length_c-i]=s1[length_c-i-1];
> }
> s1[length_p]='.';
>
> for(i=0;i<=length_c;i++)
> {
> s2[i]=s1[length_c-i];
> }
>
>
> }
>
> else
> for(i=0;i<length_c;i++)
> {
> s2[i]=s1[length_c-i-1];
> }
>
> s2[i]='\0';
>
>
> if(length_pa!=0)//还原数组a的值
> {
> for(i=0;i<length_pa;i++)
> {
> a[length_a-i]=a[length_a-i-1];
> }
> a[length_a-length_pa]='.';
> }
>
> return s2;
> }
>
>
> void ExpNum(char *a,int n)
> {
> int i=0 ;
> char *c=new char[10000];
> c[0]='1';
> c[1]=0;
> if (n>0)
> {
> for (int i=0;i<n;i++)
> {
> c= MultiNum(a,c);
> }
>
> }
> if(c[0]=='0')
> {
> for(i=0;i<length_c;i++)
> c[i]=c[i+1];
> c[i]='\0';
> }
>
> if(c[length_c]=='0')
> {
> i=length_c;
> while((i>length_c-length_p)&&(c[i]=='0'))
> {
> c[i]='\0';
> i--;
> }
> }
>
> cout<<endl<<c<<endl;
>
> }
>
>
> int main()
> {
>
> int n;
> int i=0;
> char a[6][1000];
> while(i<6)
> {
> cin>>a[i];
>
> cin>>n;
> ExpNum(a[i],n);
> i++;
> }
>
> return 0;
>
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator