当前位置:编程学习 > C/C++ >>

求C++高手解决

 计算器

设计要求:可以实现数值的加减乘除运算及两复数或矢量的和的运算

提示:复数或矢量的和的运算需运算符重载

菜单列表:1简单数值的加、减、乘、除

              2两复数和的运算

3矢量和的运算
答案:写得比较仓促,代码都写在一个文件里了,大概功能已实现,如果你不习惯可以将类另外写在一个文件里。


C++ Code



#include<iostream>
using namespace std;
//class comples(复数类)
class complex
{
public:
double a,b;
complex(double x,double y)
{
a=x;
b=y;
}
void init(double x,double y)
{
a=x;
b=y;
}
//override + operator(重载+运算符)
complex operator +(complex c1)
{
complex c=*this;
c.a+=c1.a;
c.b+=c1.b;
return c;
}
};
//class vector(矢量类)
class vector
{
public:
double a,b;
vector(double x,double y)
{
a=x;
b=y;
}
void init(double x,double y)
{
a=x;
b=y;
}
//override + operator(重载+运算符)
vector operator +(vector v1)
{
vector v=*this;
if(v.a/v1.a==v.b/v1.b)
{
v.a+=v1.a;
   v.b+=v1.b;
}
else
{
cout<<"只有平行向量才具有可加性!"<<endl;
   v.a=v.b=0;
        }
return v;
    }
};
//class calc(运算类)
class calc
{
public:
    complex add(complex c1,complex c2)
{
return c1+c2;
}
vector add(vector v1,vector v2)
{
return v1+v2;
}
};


//main menu(主菜单)
void menu()
{
void Simple();
void Complex();
void Vector();
int cmd=0;
    cout<<"+----------------简易计算器----------------+"<<endl;
cout<<"|             1.简单数值运算               |"<<endl;
cout<<"|             2.复数加法运算               |"<<endl;
cout<<"|             3.矢量加法运算               |"<<endl;
cout<<"+------------------------------------------+"<<endl;
cout<<"请键入相应数字进入各菜单:";
cin>>cmd;
switch(cmd)
{
case 1:
Simple();
break;
case 2:
Complex();
break;
case 3:
Vector();
break;
default:
cout<<"请输入1~3间的整数!"<<endl<<"谢谢使用,再见!"<<endl;
}
}
//simple operate function(简单数值运算)
void Simple()
{
void back();
 l1:
fflush(stdin);
cout<<"此模式可进行简单数值计算"<<endl;
char opt='\0',cmd=opt;
double op1=0.0,op2=0.0,result=0.0;

cout<<"输入第一个操作数:";
cin>>op1;
cout<<"请选择操作符:+、-、×、÷"<<endl;
cin>>opt;
cout<<"输入第二个操作数:";
cin>>op2;
switch(opt)
{
case '+':
result=op1+op2;
break;
case '-':
result=op1-op2;
break;
case '*':
result=op1*op2;
case '/':
result=op1/op2;
break;
default:
cout<<"错误的操作符!"<<endl;


}
cout<<op1<<opt<<op2<<"="<<result<<endl;
    cout<<"继续(C)     主菜单(M)"<<endl;
cin>>cmd;
switch(cmd)
{
case 'C':
case 'c':
goto l1;
break;
case 'M':
case 'm':
back();
break;
default:
cout<<"谢谢使用,再见!"<<endl;
}


}
//complex operate function(复数运算)
void Complex()
{
void back();
 l1:
fflush(stdin);
cout<<"此模式可进行复数的加法运算"<<endl;
char cmd='\0';
double a1=0.0,b1=a1,a2=a1,b2=a2;
calc cl;
cout<<"输入第一个复数的实部和虚部(用空格隔开):";
cin>>a1>>b1;
cout<<"输入第二个复数的实部和虚部(用空格隔开):";
cin>>a2>>b2;
complex c1(a1,b1);
complex c2(a2,b2);
complex c=cl.add(c1,c2);
cout<<"复数1="<<c1.a<<"+"<<c1.b<<"i"<<endl<<"复数2="<<c2.a<<"+"<<c2.b<<"i"<<endl;
cout<<"和为:"<<c.a<<"+"<<c.b<<"i"<<endl;
    cout<<"继续(C)     主菜单(M)"<<endl;
cin>>cmd;
switch(cmd)
{
case 'C':
case 'c':
goto l1;
break;
case 'M':
case 'm':
back();
break;
default:
cout<<"谢谢使用,再见!"<<endl;
}


}
//vector operate function(矢量运算)
void Vector()
{
void back();
 l1:
fflush(stdin);
cout<<"此模式可进行矢量的加法运算"<<endl;
char cmd='\0';
double a1=0.0,b1=a1,a2=a1,b2=a2;
calc cl;
cout<<"输入第一个矢量的坐标(用空格隔开):";
cin>>a1>>b1;
cout<<"输入第二个矢量的坐标(用空格隔开):";
cin>>a2>>b2;
vector v1(a1,b1);
vector v2(a2,b2);
vector v=cl.add(v1,v2);
cout<<"矢量1=("<<v1.a<<","<<v1.b<<")"<<endl<<"矢量2=("<<v2.a<<","<<v2.b<<")"<<endl;
cout<<"和为:("<<v.a<<","<<v.b<<")"<<endl;
    cout<<"继续(C)     主菜单(M)"<<endl;
cin>>cmd;
switch(cmd)
{
case 'C':
case 'c':
goto l1;
break;
case 'M':
case 'm':
back();
break;
default:
cout<<"谢谢使用,再见!"<<endl;
}


}
//back to main menu(返回主菜单)
void back()
{
void menu();
fflush(stdout);
menu();
}
//main method(main方法)
int main()
{
void menu();
    menu();
return 0;
}


Debug


上一个:c++ 如何连接mysql数据库
下一个:用友元函数做C++

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,