字符串的加减乘除解决不够位的情况(二)

2014-11-24 08:55:54 · 作者: · 浏览: 2
an-1)
cout<<".";
cout< c[i]=0;
}
}
cout< }
void multiply_string(char str1[],char str2[],unsigned int c[]) //大数相乘,入口为字符串。
{
unsigned int a[MAX]={0},b[MAX]={0};
int sign=0;
transition(a,str1);
transition(b,str2);
multiply_int(a,b,c);
}
int sign_comp(char str1[],char str2[]) //符号判断,如果为负数将作相应处理。
{
int i=0,sign_num=0;
if(str1[0]=='-')
{
sign_num=!sign_num;
for(i=0;i str1[i]=str1[i+1];
}
if(str2[0]=='-')
{
sign_num=!sign_num;
for(i=0;i str2[i]=str2[i+1];
}
return sign_num;
}
int format(char str[]) //将输入的字符串进行格式化。以得到字符的一些标志信息和相应格式的新数据串。
{
int point=0,quan=0,i=0,j,k=0,sign_point=0,num_str=0;
num_str=str_num(str);
while(str[i]!=0)
{
if(str[i]<'0'||str[i]>'9')
{
if(str[i]!='.')
{
cout<<"data error"< return(-1);
}
else
{
point++;
sign_point=i;
}
}
if(point>1)
{
cout<<"data error"< return(-1);
}
i++;
}
if(point==1)
{
for(j=sign_point;j str[j]=str[j+1];
num_str--;
quan=num_str-sign_point;
}
place(num_str,str);
return quan;
}
void clear(char str[]) //清空函数。
{
int i;
for(i=0;i {
str[i]=0;
}
}

void main(void)
{
char str1[MAX]={0};
char str2[MAX]={0};
int quan1=0;
int quan2=0;
int sign=0; //0表示结果是整数,1表示结果是负数
unsigned int c[MAX*2+1]={0};
while(true)
{
cout<<"Please input the first number:";
cin>>str1;
cout<<"Please input the second number:";
cin>>str2;
sign=sign_comp(str1,str2);
quan1=format(str1);
quan2=format(str2);
if(quan1==-1||quan2==-1)
{
clear(str1);
clear(str2);
}
if(quan1!=-1 && quan2!=-1 && str1[0]!=0 && str2[0]!=0)
break;
}
multiply_string(str1,str2,c);
output(sign,c,quan1+quan2);
system("pause");
}