/*****************************************************************************/
#include <iostream.h>
#include "matrix.h"
#include "complex.h"
#include "rational.h"
#include "set.h"
void jiemian();
void tuichu();
void complexcompute();
void rationalcompute();
void matrixcompute();
void setcompute();
/************************************************************************/
/* main函数 */
/************************************************************************/
int main()
{
jiemian();
return 0;
}
/************************************************************************/
/* 主界面函数,实现了界面及函数调用 */
/************************************************************************/
void jiemian()
{
int i;
cout<<endl<<endl;
cout<<"---------------------------------------------------------------"<<endl;
cout<<"* *"<<endl;
cout<<" 欢迎进入用运算符重载实现特殊计算器程序 "<<endl;
cout<<"* *"<<endl;
cout<<"----------------------------------------------------------------"<<endl;
while(i)
{
cout<<endl<<endl;
cout<<"请选择您的计算类型:"<<endl<<endl;
cout<<" 1.复数计算;"<<endl;
cout<<" 2.有理数计算;"<<endl;
cout<<" 3.矩阵计算;"<<endl;
cout<<" 4.集合计算;"<<endl;
cout<<" 0.退出;"<<endl;
cout<<"请选择按键(0-4):";
cin>>i;
cout<<endl;
//判断输入,0退出
if(i>=0 && i<=4)
{
switch(i)
{
case 1:
complexcompute();
break;
case 2:
rationalcompute();
break;
case 3:
matrixcompute();
break;
case 4:
setcompute();
break;
case 0:
tuichu();
break;
}
}
else
{
cout<<"输入错误!";
cout<<"重新输入"<<endl;
}
}
}
/************************************************************************/
/* 退出函数 */
/************************************************************************/
void tuichu()
{
cout<<"---------------------------------------------------------------"<<endl;
cout<<"* *"<<endl;
cout<<" 谢谢使用运算符重载实现特殊计算器程序,再见! "<<endl;
cout<<"* *"<<endl;
cout<<"----------------------------------------------------------------"<<endl;
exit(1);
}
/************************************************************************/
/* 复数计算函数 */
/************************************************************************/
void complexcompute()
{
int j;
cout<<"请选择您的复数计算内容:"<<endl<<endl;
cout<<" 1.两个复数相加;"<<endl;
cout<<" 2.两个复数相减;"<<endl;
cout<<" 3.两个复数相乘;"<<endl;
cout<<" 4.两个复数相除;"<<endl;
cout<<" 0.返回主界面;"<<endl;
cout<<"请选择按键(0-4):";
cin>>j;
while(j)
{
//判断输入,0退出
if(j>=0 && j<=4)
{
float r1,j1,r2,j2;
cout<<"请输入第一个复数的实部:";
cin>>r1;
cout<<"请输入第一个复数的虚部:";
cin>>j1;
cout<<"请输入第二个复数的实部:";
cin>>r2;
cout<<"请输入第二个复数的虚部:";
cin>>j2;
complex c1(r1,j1);
complex c2(r2,j2);
complex c3;
switch(j)
{
//case1:复数相加
case 1:
c3=c1+c2;
c1.print ();
c2.print ();
c3.print ();
break;
case 2:
c3=c1-c2;
c1.print ();
c2.print ();
c3.print ();
break;
case 3:
c3=c1*c2;
c1.print ();
c2.print ();
c3.print ();
break;
case 4:
c3=c1/c2;
c1.print ();
c2.print ();
c3.print ();
break;
}
}
else
cout<<"按键错误,请重新选择!"<<endl;
cout<<endl;
cout<<"请选择您的复数计算内容:"<<endl<<endl;
cout<<" 1.两个复数相加;"<<endl;
cout<<" 2.两个复数相减;"<<endl;
cout<<" 3.两个复数相乘;"<<endl;
cout<<" 4.两个复数相除;"<<endl;
cout<<" 0.返回主界面;"<<endl;
cout<<"请选择按键(0-4):";
cin>>j;
cout<<endl;
}
}
/************************************************************************/
/* 有理数计算函数 */
/************************************************************************/
void rationalcompute()
{
int j;
cout<<"请选择您的有理数计算内容:"<<endl<<endl;
cout<<" 1.两个有理数相加;"<<endl;
cout<<" 2.两个有理数相减;"<<endl;
cout<<" 3.两个有理数相乘;"<<endl;
cout<<" 4.两个有理数相除;"<<endl;
cout<<" 0.返回主界面;"<<endl;
cout<<"请选择按键(0-4):";
cin>>j;
cout<<endl;
while(j)
{
//判断输入,0退出
if(j>=0 && j<=4)
{
int r1,j1,r2,j2;
cout<<"请输入第一个有理数的分子:";
cin>>r1;
cout<<"请输入第一个有理数的分母:";
cin>>j1;
cout<<"请输入第二个有理数的分子:";
cin>>r2;
cout<<"请输入第二个有理数的分母:";
cin>>j2;
rational c1(r1,j1);
rational c2(r2,j2);
rational c3;
switch(j)
{
//case1:有理数相加
case 1:
c3=c1+c2;
c1.print ();
c2.print ();
c3.print ();
break;
case 2:
c3=c1-c2;
c1.print ();
c2.print ();
c3.print ();
break;
case 3:
c3=c1*c2;
c1.print ();
c2.print ();
c3.print ();
break;
case 4:
c3=c1/c2;
c1.print ();
c2.print ();
c3.print ();
break;
}
}
else
cout<<"按键错误,请重新选择!"<<endl;
cout<<endl;
cout<<"请选择您的有理数计算内容:"<<endl<<endl;
cout<<" 1.两个有理数相加;"<<endl;
cout<<" 2.两个有理数相减;"<<endl;
cout<<" 3.两个有理数相乘;"<<endl;
cout<<" 4.两个有理数相除;"<<endl;
cout<<" 0.返回主界面;"<<endl;
cout<<"请选择按键(0-4):";
cin>>j;
cout<<endl;
}
}
/************************************************************************/
/* 矩阵计算函数 */
/************************************************************************/
void matrixcompute()
{
int j;
cout<<"请选择您的矩阵计算内容:"<<endl<<endl;
cout<<" 1.两个矩阵相加;"<<endl;
cout<<" 2.两个矩阵相减;"<<endl;
cout<<" 3.两个矩阵相乘;"<<endl;
cout<<" 0.返回主界面;"<<endl;
cout<<"请选择按键(0-3):";
cin>>j;
cout<<endl;
while(j)
{
//判断输入,0退出
if(j>=0 && j<=3)
{
int r1,j1,r2,j2,val;
cout<<"请输入第一个矩阵的行数:";
cin>>r1;
cout<<"请输入第一个矩阵的列数:";
cin>>j1;
cout<<"请输入第二个矩阵的行数:";
cin>>r2;
cout<<"请输入第二个矩阵的列数:";
cin>>j2;
matrix c1(r1,j1);
matrix c2(r2,j2);
matrix c3;
cout<<"请输入第一个矩阵的元素:"<<endl;
for(int m=1;m<=r1;m++)
for(int n=1;n<=j1;n++)
{
cout<<"第"<<m<<"行"<<n<<"列:";
cin>>val;
c1.SetElem (m,n,val);
}
c1.Disp();
cout<<"请输入二个矩阵的元素:"<<endl;
for(int h=1;h<=r2;h++)
for( int k=1;k<=j2;k++)
{
cout<<"第"<<h<<"行"<<k<<"列:";
cin>>val;
c2.SetElem (h,k,val);
}
c2.Disp();
switch(j)
{
//case1:矩阵相加
case 1:
c3=c1+c2;
cout<<"第一个矩阵为:"<<endl;
c1.Disp();
cout<<"第二个矩阵为:"<<endl;
c2.Disp();
cout<<"第三个矩阵为:"<<endl;
c3.Disp();
break;
case 2:
c3=c1-c2;
cout<<"第一个矩阵为:"<<endl;
c1.Disp();
cout<<"第二个矩阵为:"<<endl;
c2.Disp();
cout<<"第三个矩阵为:"<<endl;
c3.Disp();
break;
case 3:
c3=c1*c2;
cout<<"第一个矩阵为:"<<endl;
c1.Disp();
cout<<"第二个矩阵为:"<<endl;
c2.Disp();
cout<<"第三个矩阵为