⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bignumclass.h

📁 能运算的函数: sin,cos,tg,ctg,e^,pow(x,y),cosh,sinh,tgh,log10,ln,sqrt,arcsin,arccos, 运算方式: +,-,*,/,绝对值(“[
💻 H
字号:
#define  MAX 100
struct  strArray
	{  
	    int             nCharInt;
	    char			cChar;
		int		    nArray[MAX];//nArray[0]用来标记整数的位数,nArray[MAX-1]标记小数的位数	
		                       //1-->MAX*2/3放整数,MAX*2/3+1-->MAX-2放小数
	    struct  strArray *next;
		struct  strArray *before;
	} ;

class BignumClass
{	
	
     public: 
	    BignumClass( char *Char);//构造函数 
		BignumClass();//构造函数
        ~BignumClass();//析构函数	    

     public: 	
        struct strArray *head, *temp, *pnew;//定义结构体的一个头结点,一个中间变动的结点,一个用以申请的临时结点
	    void translate_char(); //把要处理的字符串转化为结构体
		void slove();//求值函数
		void redressal(int  arr1[]);//调整数组,使每位上数字不大于10		
		void arrayToZero(int narr[]);
		void getDigit(int narr[]);//得到长整数的整数和小数位数
		int minimal(int a,int b){return a<b?a:b;}
		int maximal(int a,int b){return a>b?a:b;}
        int zero(int arrdividend[]);//被除数是否为0了		
		void copy(int keep[],int end[]);//把end copy 给keep
     private:	   
	    char str[100];//存要处理的字符串;
        void common_divisor(struct strArray *first);//求最大公约数
		void common_multiple(struct strArray *first);//求最小公倍数	
        void deleteNode(struct strArray *first,struct strArray *second);//删除结点
		void power(int arr[],long b);//计算arr^b;
		long arrToLong(int arr[]);//把arr化为long
		void permutation(int narr[],int m);//p(n,m)求排列
		void copyNode(struct strArray *keep,struct strArray *tmp);//结点拷贝tmp的内容给keep
		void arrMul(int arrfir[],int arrsec[]);//两处数组相乘
		void arrDiv(int arrfir[],int arrsec[]);//两处数组相除


};


class ArrayClass
{	
 	 friend ArrayClass operator + ( ArrayClass &, ArrayClass & ); //数组相加
	 friend ArrayClass operator - ( ArrayClass &, ArrayClass & );//数组相减
	 friend ArrayClass operator * ( ArrayClass &, ArrayClass & ); //数组相乘
	 friend ArrayClass operator / ( ArrayClass &, ArrayClass & ); //数组相除
	 friend int operator % ( ArrayClass &, ArrayClass & ); //数组是否有整除关系
	
	 public: 
	    ArrayClass( int *array);//构造函数 
		ArrayClass();
        //~ArrayClass();//析构函数

	 public:
		ArrayClass operator = ( ArrayClass &arr1); //赋值
		int compare(int arrdividend[],int tmparr[]);//比较是否商过大了
		int arr[MAX];

	 private:
		void	decimalDispose(int arrlong[],int arrshort[]);//由于乘法时小数位过多不行就合理的舍弃几位
      	void    move(int arrdividend[],int arrdivisor[]);//根据除数移位
        void numMul(int nquotient ,int arrdivisor[],int nhead_dividend);//商乘以除数
		int      tmparr[MAX];//一个放商和除数所乘得到的数组
		void numSub(int arrdividend[],int tmparr[],int nfirst,int nlong);//计算和处理余数,nfirst是要减的首位下标,nlong是商的位数

};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -