[cpp] /**
* 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;
}
/**
* 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;
}
運算結果: