string div(const string& a,const string& b) //算法除 { string sign=((a[0]=='-')+(b[0]=='-')==1?"-":""); string aa(a[0]=='-'?a.substr(1):a); string bb(b[0]=='-'?b.substr(1):b); if(absLessThan(aa,bb)) return "0"; string s; string y(aa.substr(0,bb.length()-1)); for(int i=bb.length()-1;i<aa.length();i++) { y+=aa[i]; int count=0; for(;!absLessThan(y,bb);count++) substract(y,bb); s+=char(count+'0'); } int pos=s.find_first_not_of('0'); //滤去前导0,加上符号 if(pos!=string::npos) s=s.substr(pos); string c=sign+s;//C串判断是否为大于200位的数 if(c.length()>200) return "Too Large Number."; else return sign+s; }
时间: 2024-04-27 09:23:12 浏览: 57
这是一个算法除的函数,可以用于大整数的除法运算。函数的输入参数是两个字符串a和b,表示要相除的两个大整数,函数返回值是字符串类型的商。函数的具体实现是先判断a和b的正负性,然后将它们转换为正整数进行运算。接着,通过一个循环来模拟手算除法的过程,每次从a中取出一部分与b进行比较,得到商和余数,将商保存到结果字符串s中。最后,滤去结果字符串s中的前导0并加上符号,得到最终的商。函数还加入了一个判断,如果得到的商的位数超过了200位,则返回字符串"Too Large Number."。
阅读全文