i have practice CBigInt, but it dont run in operator -, when it down - up, can you help me? thanks .
Code:
#include "BigInt.h"
#include "iostream"
#include "string"
using namespace std;
BigInt::BigInt(){
for(int i=0;i<N;i++){
buffer[i]=0;
}
}
//
istream &operator >>(istream &inp,BigInt &num){
inp >>num.buffer;
num.Format();
return inp;
}
//
ostream &operator <<(ostream &out,BigInt &num){
//out<<num.buffer;
for(int i=0;i<N;i++){
cout<<(int)num.buffer[i];
}
return out;
}
void BigInt::Format(){
int len=strlen(buffer);
for(int i=1;i<=len;i++){
buffer[N-i]=buffer[len-i];//go to end array
}
for(int i=N-len-1;i>=0;i--){//convert all var still ->0;
buffer[i]='0';
}
for(int i=0;i<N;i++){
buffer[i]-=48;
}
}
//
BigInt &BigInt::operator =(BigInt &num){
for(int i=0;i<N;i++){
buffer[i]=num.buffer[i];
}
return *this;
}
//
BigInt BigInt::operator +(BigInt &num){
BigInt C;
int mem=0;
for(int i=N-1;i>=0;i--){
C.buffer[i]=buffer[i]+num.buffer[i]+mem;
if(C.buffer[i]>10){
C.buffer[i]-=10;
mem=1;
}
else mem=0;
}
return C;
}
BigInt BigInt::operator -(BigInt &num){
BigInt h;int mem=0;
if(len>=num.len){
for(int i=N-1;i>=0;i--){
h.buffer[i]=buffer[i]-num.buffer[i]-mem;
if(buffer[i]>=num.buffer[i]){
h.buffer[i]=buffer[i]-(num.buffer[i]+mem);
mem=0;
}
if(buffer[i]<num.buffer[i])
{
h.buffer[i]=(buffer[i]+10)-num.buffer[i]-mem;
mem=1;
}
}
}
if(len<num.len){
for(int i=N-1;i>=0;i--){
h.buffer[i]=num.buffer[i]-buffer[i]-mem;
if(buffer[i]>=num.buffer[i]){
h.buffer[i]=num.buffer[i]-(buffer[i]+mem);
mem=0;
}
if(buffer[i]<num.buffer[i])
{
h.buffer[i]=(num.buffer[i]+10)-buffer[i]-mem;
mem=1;
}
}
}
return h;
}
Code:
#include "iostream"
using namespace std;
#define N 10
class BigInt{
public :
friend istream &operator >>(istream &inp,BigInt &num);
friend ostream &operator <<(ostream &out,BigInt &num);
char buffer[N];
BigInt();
void Format();
int len;
BigInt &operator =(BigInt &num);
BigInt operator +(BigInt &num);
BigInt operator -(BigInt &num);
};
//
Code:
#include "iostream"
#include "BigInt.h"
using namespace std;
void main(){
BigInt A;
cout<<"Input A:";
cin>>A;
//cout<<A;
BigInt B;
//B=A;cout<<endl;
cout<<"Input B:";
cin>>B;
BigInt C;
//C=A+B;
C=A-B;
cout<<C;
//BigInt K;
}