📄 123.cpp
字号:
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 + -