高精度减法
来源:互联网 发布:网络直播原理 编辑:程序博客网 时间:2024/04/29 06:38
#include<iostream>
#include<cstring>
using namespace std;
int compare(string s1,string s2);
int main()
{
string str1,str2;
int a[250],b[250],len;
int i;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
cout<<"Please input two number :"<<endl;
cin>>str1>>str2;
a[0]=str1.length();
for(i=1;i<=a[0];i++)
a[i]=str1[a[0]-i]-'0';
b[0]=str2.length();
for(i=1;i<=b[0];i++)
b[i]=str2[b[0]-i]-'0';
if((compare(str1,str2))==0) //大于等于,做按位减,并处理借位。
{
for(i=1;i<=a[0];i++)
{
a[i]-=b[i];
if (a[i]<0)
{
a[i+1]--;
a[i]+=10;
}
}
//a[0]++;
while((a[a[0]]==0)&&(a[0]>1)) a[0]--;
for(i=a[0];i>=1;i--)
cout<<a[i];
cout<<endl;
}
else
{
cout<<'-'; //小于就输出负号
for(i=1;i<=b[0];i++) //做按位减,大的减小的
{
b[i]-=a[i];
if (b[i]<0)
{
b[i+1]--;
b[i]+=10;
}
}
// b[0]++;
while((b[b[0]]==0)&&(b[0]>1)) b[0]--;
for(i=b[0];i>=1;i--)
cout<<b[i];
cout<<endl;
}
return 0;
}
int compare(string s1,string s2) //比较字符串(两个数)数字的大小,大于等于返回0,小于返回1。
{
if(s1.length()>s2.length()) return 0; //先比较长度,哪个字符串长,对应的那个数就大
if(s1.length()<s2.length()) return 1;
for(int i=0;i<=s1.length();i++) //长度相同时,就一位一位比较。
{
if(s1[i]>s2[i]) return 0;
if(s1[i]<s2[i]) return 1;
}
return 0; //如果长度相同,每一位也一样,就返回0,说明相等
}
/*
做减法时,首先要判断两个字符串的大小,决定是否输出负号,
然后就是按位减法,注意处理借位。
*/
#include<cstring>
using namespace std;
int compare(string s1,string s2);
int main()
{
string str1,str2;
int a[250],b[250],len;
int i;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
cout<<"Please input two number :"<<endl;
cin>>str1>>str2;
a[0]=str1.length();
for(i=1;i<=a[0];i++)
a[i]=str1[a[0]-i]-'0';
b[0]=str2.length();
for(i=1;i<=b[0];i++)
b[i]=str2[b[0]-i]-'0';
if((compare(str1,str2))==0) //大于等于,做按位减,并处理借位。
{
for(i=1;i<=a[0];i++)
{
a[i]-=b[i];
if (a[i]<0)
{
a[i+1]--;
a[i]+=10;
}
}
//a[0]++;
while((a[a[0]]==0)&&(a[0]>1)) a[0]--;
for(i=a[0];i>=1;i--)
cout<<a[i];
cout<<endl;
}
else
{
cout<<'-'; //小于就输出负号
for(i=1;i<=b[0];i++) //做按位减,大的减小的
{
b[i]-=a[i];
if (b[i]<0)
{
b[i+1]--;
b[i]+=10;
}
}
// b[0]++;
while((b[b[0]]==0)&&(b[0]>1)) b[0]--;
for(i=b[0];i>=1;i--)
cout<<b[i];
cout<<endl;
}
return 0;
}
int compare(string s1,string s2) //比较字符串(两个数)数字的大小,大于等于返回0,小于返回1。
{
if(s1.length()>s2.length()) return 0; //先比较长度,哪个字符串长,对应的那个数就大
if(s1.length()<s2.length()) return 1;
for(int i=0;i<=s1.length();i++) //长度相同时,就一位一位比较。
{
if(s1[i]>s2[i]) return 0;
if(s1[i]<s2[i]) return 1;
}
return 0; //如果长度相同,每一位也一样,就返回0,说明相等
}
/*
做减法时,首先要判断两个字符串的大小,决定是否输出负号,
然后就是按位减法,注意处理借位。
*/
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- 高精度减法
- ^_^gsensor 流程
- Eclipse3.7 WindowBuilder(图形界面插件)使用小结
- 10进制转任意进制字符串(源代码)
- 最简单的单链表(静态单链表)
- Failed to allocate memory: 8
- 高精度减法
- C#方法重载与多态
- Relocation the generic ELF
- REDIS
- XML----DOM4J
- 单元测试利器 JUnit 4
- 将ORACLE数据库数据文件迁移到其他目录
- QT编译后release下无法执行,找不到dll输入点
- CELLID的定位技术