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

📄 123.cpp

📁 有理数的运算
💻 CPP
📖 第 1 页 / 共 2 页
字号:
template <class T>
class sort{
private:
	int i,n;
	T t;
	T number[100];
public:
	sort(T numbers[],int a);
	sort(sort &p);
	~sort(void){};
	//排序函数
	void bubble(void);
};
//有理数组类构造函数
template <class T>
sort<T>::sort(T numbers[],int a){
	n=a;
	for(i=0;i<n;i++)
		number[i]=numbers[i];
}
//有理数组类拷贝构造函数
template <class T>
sort<T>::sort(sort &p){
	n=p.n;
	for(i=0;i<n;i++)
		number[i]=p.number[i];
}
//有理数组类排序函数
template <class T>
void sort<T>::bubble(){
	ofstream *myfile=new ofstream;
	ofstream out=*myfile;
	for(i=0;i<n;i++)
		for(int j=0;j<n-i-1;j++)
			if(number[j+1]<number[j]){
				t=number[j];
				number[j]=number[j+1];
		        number[j+1]=t;	
			}				
	for(int k=0;k<n;k++){
		cout<<number[k]<<',';
		out<<number[k];	
	}
	cout<<endl; 
	out<<endl;
	myfile->close();
}
/////////////////////////////////////////////////////////////////////////
void main(){
	//int numerator,denominator;
	//double  decimal;
	rationalnumber  rat1,rat2,rat;
	//选择运算方法
	int q;
	char z;
	while(1){
		cout<<"\t\t\t  *******************"<<endl
		    <<"\t\t\t  ****1:四则运算:****"<<endl
			<<"\t\t\t  ****2:特殊运算:****"<<endl
			<<"\t\t\t  ****3:退出程序:****"<<endl
			<<"\t\t\t  *******************"<<endl;
		 cin>>q;
		 //四则运算 
		 if(q==1){
			ofstream *myfile=new ofstream;	
			myfile->open("arithmetic.txt");
			while(1){
				cout<<"请输入你想运算的数:"<<endl;
				cin>>rat1>>rat2;
				cout<<"请选择运算方法+、-、*、/"<<endl;
				char a;
				cin>>a;
				if(a=='+'){
					rat=rat1+rat2;
					cout<<rat1<<"+"<<rat2<<"="<<rat<<endl; 
					ofstream out=*myfile;
					out<<rat1<<"+"<<rat2<<"="<<rat<<endl;
					myfile->close();
				}
				else 
					if(a=='-'){
						if(rat1>rat2)
						{rat=rat1-rat2;
						 cout<<rat1<<"-"<<rat2<<"="<<rat<<endl;}
						else if(rat1<rat2)
						{rat=rat1-rat2;
                         cout<<rat1<<"-"<<rat2<<"="<<"-"<<rat<<endl;}
						else if(rat1==rat2)
						{cout<<rat1<<"-"<<rat2<<"="<<"0"<<endl;}
			    		ofstream out=*myfile;
						out<<rat1<<"-"<<rat2<<"="<<rat<<endl;
						myfile->close();
					}
					else 
						if(a=='*'){
							rat=rat1*rat2;
							cout<<rat1<<"*"<<rat2<<"="<<rat<<endl; 
							ofstream out=*myfile;
							out<<rat1<<"*"<<rat2<<"="<<rat<<endl;
							myfile->close();
						}
						else 
							if(a=='/'){
								rat=rat1/rat2;
								cout<<rat1<<"/"<<rat2<<"="<<rat<<endl; 
								ofstream out=*myfile;
								out<<"("<<rat1<<")"<<"/"<<"("<<rat2<<")"<<"="<<"("<<rat<<")"<<endl;
								myfile->close();
							}
							else {
								cout<<"输入有误!";
								continue;
							}
							cout<<"退出四则运算请输入0,继续 四则运算按任意键并回车"<<endl;	
							cin>>z;
							if(z=='0')
								break;
			}
		 }
	 //特殊运算
		 else
			 if(q==2){
				ofstream *myfile=new ofstream;	
				myfile->open("especial.txt");
				  while(1){
					  rationalnumber t;
					  char f;
			    	  cout<<"\t┌———————————————————————┐"<<endl
						  <<"\t├——请选择你想进行的运算:   —————————┤"<<endl
				          <<"\t├——A:求正旋函数 sin: ————————————┤"<<endl
    			    	  <<"\t├——B:求余旋函数 cos: ————————————┤"<<endl
					      <<"\t├——C:求正切函数 tan: ————————————┤"<<endl
				 	      <<"\t├——D:求反正旋函数 arcsin(sin-1): ——————┤"<<endl
				          <<"\t├——E:求反余旋函数 arccos(cos-1): ——————┤"<<endl
    				  	  <<"\t├——F:求反正切函数 arctan(tan-1): ——————┤"<<endl
						  <<"\t├——G:求一个数的乘方 x的n次方 ————————┤"<<endl
				 		  <<"\t├——H:求一个数的平方  ————————————┤"<<endl
						  <<"\t├——I:求一个数的立方  ————————————┤"<<endl
					   	  <<"\t├——J:求一个数的开方  ————————————┤"<<endl
						  <<"\t├——K:求一个数的倒数 1/x -——————————┤"<<endl
						  <<"\t├——L:求一个数的自然对数 ln(x)———————┤"<<endl
						  <<"\t├——M:求一个数的对数以x为底y的对数 log(x,y) ┤"<<endl
						  <<"\t├——N:输入一列有理数排序———————————┤"<<endl
						  <<"\t└———————————————————————┘"<<endl;
				   	cin>>f;
				  //求正旋值
				  if(f=='A'){
					  cout<<"请输入一个弧度制的数x:"<<endl;
					  cin>>rat1;
					  t=sin(rat1);
					  cout<<"x的正旋值是:"<<t<<endl;
						ofstream out=*myfile;
						out<<"sin("<<rat1<<")="<<t<<endl;
						myfile->close();
				  }
				  //求余旋值
				  else
					  if(f=='B')
					  {cout<<"请输入一个弧度制的数x:"<<endl;
					  cin>>rat1;
					  t=cos(rat1);
					  cout<<"x的余旋值是:"<<t<<endl;
						ofstream out=*myfile;
						out<<"cos("<<rat1<<")="<<t<<endl;
						myfile->close();
					  }
					  //求正切值
					  else
						  if(f=='C')
						  {cout<<"请输入一个弧度制的数x:"<<endl;
						  cin>>rat1;
						  t=tan(rat1);
						  cout<<"x的正切值是:"<<t<<endl;						  
							ofstream out=*myfile;
							out<<"tan("<<rat1<<")="<<t<<endl;
							myfile->close();
						  }
						  //求反正旋值
						  else
							  if(f=='D')
						  {cout<<"请输入一个数x:"<<endl;
						  cin>>rat1;
						  t=asin(rat1);
						  cout<<"x的反正旋值是:"<<t<<endl;
						ofstream out=*myfile;
						out<<"asin("<<rat1<<")="<<t<<endl;
						myfile->close();
						  }   
						  //求反余旋值
						  else
							  if(f=='E')
						  {cout<<"请输入一个数x:"<<endl;
						  cin>>rat1;
						  t=acos(rat1);
						  cout<<"x的反余旋值是:"<<t<<endl;
					  	  ofstream out=*myfile;
						  out<<"acos("<<rat1<<")="<<t<<endl;
						  myfile->close();
						  } 
						  //求反正切值
						  else
							  if(f=='F')
						  {cout<<"请输入一个弧度制数x:"<<endl;
						  cin>>rat1;
						  t=atan(rat1);
						  cout<<"x的反正切值是:"<<t<<endl;
						  ofstream out=*myfile;
						  out<<"atan("<<rat1<<")="<<t<<endl;
						  myfile->close();
						  }
						  //求乘方值
						  else
							  if(f=='G')
						  {cout<<"请输入底数x:"<<endl;
						  cin>>rat1;
						  cout<<"请输入指数n:"<<endl;
						  cin>>rat2;
						  t=pow(rat1,rat2);
						  cout<<"x的n次方的值是:"<<t<<endl;
						  ofstream out=*myfile;
						  out<<rat1<<"的"<<rat2<<"次方为"<<t<<endl;
						  myfile->close();
						  }
						  //求平方值
						  else
							  if(f=='H')
						  {cout<<"请输入底数x:"<<endl;
						  cin>>rat1;
						  t=pow(rat1);
						  cout<<"x平方的值是:"<<t<<endl;
						  ofstream out=*myfile;
						  out<<rat1<<"的平方为"<<t<<endl;
						  myfile->close();
						  }
						 else
							  if(f=='I')
						  {cout<<"请输入底数x:"<<endl;
						  cin>>rat1;
						  rationalnumber rat2=3;
						  t=pow(rat1,rat2);
						  cout<<"x立方的值是:"<<t<<endl;
						  ofstream out=*myfile;
						  out<<rat1<<"的立方为"<<t<<endl;
						  myfile->close();
						  }
						  //求开方值
						  else
							  if(f=='J')
						  {cout<<"请输一个数x:"<<endl;
						  cin>>rat1;
						  t=sqrt(rat1);
						  cout<<"x开方的值是:"<<t<<endl;
						  ofstream out=*myfile;
						  out<<rat1<<"开方的值是"<<t<<endl;
						  myfile->close();
						  }
						  //求一个数的倒数
						  else
							  if(f=='K')
						  {cout<<"请输一个数x:"<<endl;
						  cin>>rat1;
						  t=down(rat1);
						  cout<<"x的倒数是:"<<t<<endl;
						  ofstream out=*myfile;
						  out<<rat1<<"的倒数是"<<t<<endl;
						  myfile->close();
						  }
						  //求一个数的自然对数
						 else
							   if(f=='L')
							   {while(1)
							   {cout<<"请输一个正数x:"<<endl;
								  cin>>rat1;
								  rationalnumber ratx(0);
								  if(rat1<ratx){
									  cout<<"输入有误!";
									  continue;}
								  else{
								  t=ln(rat1);
								  cout<<"x的自然对数是:"<<t<<endl;
								  ofstream out=*myfile;
								  out<<rat1<<"的自然对数是:"<<t<<endl;
								  myfile->close();
								  break;}
							   }
						  }
						  //求以x为底y的对数
						 else
							   if(f=='M')
							   {
								   while(1) 
								   {cout<<"请输入底数x:"<<endl;
									  cin>>rat1;
									  rationalnumber ratx(0);
									   if(rat1<ratx)
									   {  cout<<"输入有误!";
										  continue;}
									else{
										  cout<<"请输入y :"<<endl;
										  cin>>rat2;
										  t=log(rat1,rat2);
										  cout<<"x为底y的对数:"<<t<<endl;
										  ofstream out=*myfile;
										  out<<rat1<<"为底"<<rat2<<"的对数为:"<<t<<endl;
										  myfile->close();
										  break;
									   }
								   }
							   }
						//有理数排序
						 else
							   if(f=='N'){
								   rationalnumber number[100];
    							   int i;
								   char c,ch='y';
				   				   sort<rationalnumber> *num;
								   while(ch=='y'){
									   cout<<"请输入要排序的数组:"<<endl
										   <<"两数之间用,隔开,输入#结束输入"<<endl
						   				   <<"(例:5/7,6/5,8/7,9/4,2/3#)"<<endl;
									   c=',';
									   for(i=0;c==',';i++){
										   cin>>number[i];
										   cin>>c;
									   }
									   num=new sort<rationalnumber>(number,i);
									   num->bubble();
									   delete num;
									   cout<<"本次排序结束,需要重新输入数据吗?(y/n)"<<endl;
									   cin>>ch;
								   }
							   }
						 else
							 cout<<"输入有误!"<<endl;
							 cout<<"退出特殊运算请输入0,继续特殊运算按任意键并回车"<<endl;		 
		    				cin>>z;
		    				if(z=='0')
		    					break;
							}
							}
		else
			if(q==3) 
				break;
			else
				cout<<"输入有误!请重新输入!"<<endl;
}
}

⌨️ 快捷键说明

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