大数相乘,该如何处理
大数相乘
#include<iostream>
#include<string>
#include<cstring>
using namespace std ;
int A[2000],B[2000],C[2000];
int i ,j,t;
void getBigChen(string num1,string num2)
{
StringToNunmer(num1,num2);
RevString(num1,num2);
/*计算*/
for(i=0;i<2000;i++)
{
for(j=0;j<2000;j++)
{
C[i+j]=A[i]*B[j];
}
}
for(i=0;i<2000;i++)
{
if(C[i]>=10)
{
C[i]%=10;
C[i+1]=C[i]/10;
}
}
for(i=2000;i>0;i--)
{
if(C[i])
break;
}
for(j=i;j>0;--j)
{
j!=0?cout<<C[j]:cout<<C[j]<<endl;
}
}
void StringToNunmer(string str1,string str2)
{
for(i=0;i<2000;i++)
{
A[i]=str1[i]-='0';
B[i]=str2[i]-='0';
}
}
void RevString(string num1,string num2)
{
i =num1.length()-1,j=0;
for(;i>j;i--,j++)
{
num1[j]= num1[i];
}
i=num2.length()-1,j=0;
for(;i>j;i--,j++)
{
num2[j]= num2[i];
}
}
int main()
{
string num1,num2;
while(cin>>num1>>num2)
{
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
getBigChen(num1,num2);
}
return 0 ;
}
运行的时候提示不能函数不能使用
------解决方案--------------------
在using namespace std ;下面加上:
void StringToNunmer(string str1,string str2);
void RevString(string num1,string num2);
函数调用前必须先声明
#include<iostream>
#include<string>
#include<cstring>
using namespace std ;
int A[2000],B[2000],C[2000];
int i ,j,t;
void getBigChen(string num1,string num2)
{
StringToNunmer(num1,num2);
RevString(num1,num2);
/*计算*/
for(i=0;i<2000;i++)
{
for(j=0;j<2000;j++)
{
C[i+j]=A[i]*B[j];
}
}
for(i=0;i<2000;i++)
{
if(C[i]>=10)
{
C[i]%=10;
C[i+1]=C[i]/10;
}
}
for(i=2000;i>0;i--)
{
if(C[i])
break;
}
for(j=i;j>0;--j)
{
j!=0?cout<<C[j]:cout<<C[j]<<endl;
}
}
void StringToNunmer(string str1,string str2)
{
for(i=0;i<2000;i++)
{
A[i]=str1[i]-='0';
B[i]=str2[i]-='0';
}
}
void RevString(string num1,string num2)
{
i =num1.length()-1,j=0;
for(;i>j;i--,j++)
{
num1[j]= num1[i];
}
i=num2.length()-1,j=0;
for(;i>j;i--,j++)
{
num2[j]= num2[i];
}
}
int main()
{
string num1,num2;
while(cin>>num1>>num2)
{
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
getBigChen(num1,num2);
}
return 0 ;
}
运行的时候提示不能函数不能使用
------解决方案--------------------
在using namespace std ;下面加上:
void StringToNunmer(string str1,string str2);
void RevString(string num1,string num2);
函数调用前必须先声明