Hello,
As given in book of Deitel and Deitel, i am trying to make a hugeint class which adds and subtracts a 40 digit number. I have successfully done the add member function but i want help from members to make the subtract function successful. I have done it and it works for some data sets but for some it doesn't. This is the code that i have worked so far
Code:#include <iostream.h> #include <string.h> class hugeint { int a[40]; char s[40]; public: hugeint(){} hugeint(char *); void operator+(hugeint); void operator-(hugeint); void putdata(); }; void hugeint::operator+(hugeint b) { int i,l,carry=0; hugeint temp; if(strlen(s)>strlen(b.s)) l=strlen(s); else l=strlen(b.s); for(i=39;i>=40-l;i--) { temp.a[i]=a[i]+b.a[i]+carry; carry=0; if(temp.a[i]>9) { carry++; a[i]=a[i]%10; } } if(a[i]>9) { a[i]=a[i]%10; a[i-1]=1; l++; } cout<<"\n\nThe Addition Is :\n"; for(i=40-l;i<40;i++) cout<<temp.a[i]; } void hugeint::operator-(hugeint b) { int i,l,borrow; hugeint temp; if(strlen(s)>strlen(b.s)) l=strlen(s); else l=strlen(b.s); for(i=39;i>=l;i--) { temp.a[i]=a[i]-borrow-b.a[i]; borrow=0; if(temp.a[i]<0) { borrow++; temp.a[i]=a[i]+10-b.a[i]; } } cout<<"\n\nThe Subtraction Is :\n"; for(i=40-l;i<40;i++) cout<<temp.a[i]; } void hugeint::putdata() { int i; cout<<"\n\nThe Number Is :\n"; for(i=40-strlen(s);i<40;i++) cout<<a[i]; } hugeint::hugeint(char *t) { strcpy(s,t); for(int i=0;i<40;i++) a[i]=0; int j; for(i=40-strlen(s),j=0;i<40;j++,i++) a[i]=s[j]-'0'; } int main(void) { hugeint a("871"),b("77"); a.putdata(); b.putdata(); a-b; return 0; }



LinkBack URL
About LinkBacks


