/**
* Copyright (c) 2012, 烟台大学计算机学院
* All rights reserved.
* 文件名称:text.cpp
* 作 者: 胡颖
* 完成日期:2013 年 6 月 28 日
* 版 本 号:v1.0
*
* 输入描述:输入操作指令及计算的数字、符号
* 问题描述:制作简易计算器
* 程序输出:输出操作页面及计算结果
* 问题分析:利用运算符重载实现数字的加减乘除
* 算法设计:略
*/
#include <iostream>
#include <cstdlib>
using namespace std;
class Number
{
public:
Number(double aa=0);
//运算符重载
Number operator+(Number &c);
Number operator-(Number &c);
Number operator*(Number &c);
Number operator/(Number &c);
friend istream&operator>>(istream&,Number&);
friend ostream&operator<<(ostream&,Number&);
void mainmenu();//主菜单
double calculation();//计算
private:
double a;
};
Number::Number(double aa):a(aa) {}
Number Number::operator+(Number &c)
{
Number n;
n.a=a+c.a;
return n;
}
Number Number::operator-(Number &c)
{
Number n;
n.a=a-c.a;
return n;
}
Number Number::operator*(Number &c)
{
Number n;
n.a=a*c.a;
return n;
}
Number Number::operator/(Number &c)
{
Number n;
n.a=a/c.a;
return n;
}
istream&operator>>(istream&input,Number &c)
{
input>>c.a;
return input;
}
ostream&operator<<(ostream&output,Number&c)
{
output<<c.a;
return output;
}
void Number::mainmenu()
{
int chooser;
cout<<endl;
cout<<"请输入操作类型:"<<endl;
cout<<"****************"<<endl;
cout<<"*---1.计算-----*"<<endl;
cout<<"*---2.退出-----*"<<endl;
cout<<"****************"<<endl;
cin>>chooser;
switch(chooser)
{
case 1:
calculation();//计算
break;
case 2:
exit(0);//退出
default:
cout<<"您的选择有误!\n";
cout<<"按任意键继续......";
break;
}
}
double Number::calculation()
{
Number n1,n2,a;
char f;
cin>>n1>>f>>n2;
if(f=='+')
{
a=n1+n2;
cout<<a;
}
if(f=='-')
{
a=n1-n2;
cout<<a;
}
if(f=='*')
{
a=n1*n2;
cout<<a;
}
if(f=='/')
{
a=n1/n2;
cout<<a;
}
mainmenu();
return 0;
}
int main()
{
Number n;
n.mainmenu();
return 0;
}
运算结果: