#ifndef _CALCULATOR_H_
#define _CALCULATOR_H_
#include
#include
#include
using namespace std;
class calculator {
public:
calculator(){
number_real_up = new char[10000];
number_imag_up = new char[10000];
number_real_low = new char[10000];
number_imag_low = new char[10000];
number_real_up[0]='0';
number_real_up[1] = '\0';
number_imag_up[0] = '\0';
number_real_low[0] = '\0';
number_imag_low[0] = '\0';
is_real=1; //
is_real_up=1; //
is_imag_up=1;
is_real_zheng=1; //
is_imag_zheng=1;
};
~calculator(){
delete[] number_real_up;
delete[] number_imag_up;
delete[] number_real_low;
delete[] number_imag_low;
};
calculator(char* num_r_up,char* num_i_up,char* num_r_low,char* num_i_low,bool real,bool real_up,bool imag_up,bool real_zheng,bool imag_zheng){
number_real_up = new char[10000];
number_imag_up = new char[10000];
number_real_low = new char[10000];
number_imag_low = new char[10000];
number_real_up[0]='0';
number_real_up[1] = '\0';
number_imag_up[0] = '\0';
number_real_low[0] = '\0';
number_imag_low[0] = '\0';
if (num_r_up != NULL) strcpy(number_real_up, num_r_up);
if (num_i_up != NULL) strcpy(number_imag_up, num_i_up);
if (num_r_low != NULL) strcpy(number_real_low, num_r_low);
if (num_i_low != NULL) strcpy(number_imag_low, num_i_low);
is_real=real;
is_real_up=real_up;
is_imag_up=imag_up;
is_real_zheng=real_zheng;
is_imag_zheng=imag_zheng;
};
calculator(const calculator other) { /**/
number_real_up = new char[10000];
number_imag_up = new char[10000];
number_real_low = new char[10000];
number_imag_low = new char[10000];
number_real_up[0]='0';
number_real_up[1] = '\0';
number_imag_up[0] = '\0';
number_real_low[0] = '\0';
number_imag_low[0] = '\0';
if (other.number_real_up != NULL) strcpy(number_real_up, other.number_real_up);
if (other.number_imag_up != NULL) strcpy(number_imag_up, other.number_imag_up);
if (other.number_real_low != NULL) strcpy(number_real_low, other.number_real_low);
if (other.number_imag_low != NULL) strcpy(number_imag_low, other.number_imag_low);
is_real=other.is_real;
is_real_up=other.is_real_up;
is_imag_up=other.is_imag_up;
is_real_zheng=other.is_real_zheng;
is_imag_zheng=other.is_imag_zheng;
};
calculator perator=(const calculator other) { /**/
delete[] number_real_up;
delete[] number_imag_up;
delete[] number_real_low;
delete[] number_imag_low;
number_real_up = new char[10000];
number_imag_up = new char[10000];
number_real_low = new char[10000];
number_imag_low = new char[10000];
number_real_up[0]='0';
number_real_up[1] = '\0';
number_imag_up[0] = '\0';
number_real_low[0] = '\0';
number_imag_low[0] = '\0';
if (other.number_real_up != NULL) strcpy(number_real_up, other.number_real_up);
if (other.number_imag_up != NULL) strcpy(number_imag_up, other.number_imag_up);
if (other.number_real_low != NULL) strcpy(number_real_low, other.number_real_low);
if (other.number_imag_low != NULL) strcpy(number_imag_low, other.number_imag_low);
is_real=other.is_real;
is_real_up=other.is_real_up;
is_imag_up=other.is_imag_up;
is_real_zheng=other.is_real_zheng;
is_imag_zheng=other.is_imag_zheng;
};
void display(){ /**/
int len;
len=strlen(number_real_up);
for(int i=len-1;i>=0;i--){
cout=0;i--){
cout< }
if(!is_imag_up){
cout<<'.';
len=strlen(number_imag_low);
for(int i=0;i cout< }
}
cout<<'i';
}
}
void set_real(const char* up,const char* low){ /**/
if (up != NULL){
int len=strlen(up),i;
for(i=0;i number_real_up[i]=up[len-1-i];
}
number_real_up[i]='\0';
}
if (low!=NULL){
strcpy(number_real_low,low);
if(strlen(low)) is_real_up=0;
}
}
void set_imag(const char* up,const char* low){ /**/
is_real=0;
if(up!=NULL)if (up != NULL){
int len=strlen(up),i;
for(i=0;i number_imag_up[i]=up[len-1-i];
}
number_imag_up[i]='\0';
}
if(low!=NULL){
strcpy(number_imag_low,low);
if(strlen(low)) is_imag_up=0;
}
}
calculator operator+(const calculator other); /**/
calculator operator-(const calculator other); /**/
calculator operator*(const calculator other); /**/
calculator operator/(const calculator other); /**/
calculator operator-(); /**/
calculator operator^(const calculator other); /**/
calculator ln(const calculator other); /**/
calculator log(const calculator x,const calculator other); /*x*/
protected:
char* number_imag_up; /*,*/
char* number_real_up; /*,*/
char* number_imag_low; /*,*/
char* number_real_low; /*,*/
bool is_real; /*,1*/
bool is_real_up; /*,1*/
bool is_imag_up; /*,1*/
bool is_real_zheng; /*,1,0*/
bool is_imag_zheng; /*,1,0*/
};
#endif