c++实现简单计算器
来源:互联网 发布:轮毂拉丝机编程 编辑:程序博客网 时间:2024/05/16 06:58
帮一个同学写的,非计算机类专业,应付交差,也没什么功能,两个数的加减乘除运算,以及三角函数的运算。要求用到模板、运算符重载和异常处理。
一直以来都是用的java,没怎么用过c++,就当是复习了一下c++语法。
代码如下:
#include<iostream>#include<string>#include<cmath>#include<cstdlib>using namespace std;//四则运算template <class T> class ElementaryArithmetic{private: T result; T operand1, operand2; char operators;public: //四则运算 void Calculate(); //加法运算 void add(T, T); //减法运算 void subtraction(T, T); //乘法运算 void multiplication(T, T); //除法运算 void divide(T, T); //输出运算符重载 template <class E> friend ostream &operator<<(ostream&, ElementaryArithmetic<E> &);};//四则运算template <class T> void ElementaryArithmetic<T>::Calculate(){ int type;loop1: system("cls"); cout << endl << "*******************" << endl; cout << "* 1.加法运算 *" << endl; cout << "* 2.减法运算 *" << endl; cout << "* 3.乘法运算 *" << endl; cout << "* 4.除法运算 *" << endl; cout << "*******************" << endl << endl; cout << "请输入菜单项(1-4):"; try{ cin >> type; if (type != 1 && type != 2 && type != 3 && type != 4) throw 1; } catch (int e){ cout << endl << "输入错误,请重新输入选项..."; system("pause"); goto loop1; } cout << endl << "请输入两个数字:"; cin >> operand1 >> operand2; if (type == 1){ add(operand1, operand2); operators = '+'; } else if (type == 2){ subtraction(operand1, operand2); operators = '-'; } else if (type == 3){ multiplication(operand1, operand2); operators = '*'; } else if (type == 4){ divide(operand1, operand2); operators = '/'; } }//加法运算template <class T> void ElementaryArithmetic<T>::add(T operand1,T operand2){ result = operand1 + operand2;}//减法运算template <class T> void ElementaryArithmetic<T>::subtraction(T operand1, T operand2){ result = operand1 - operand2;}//乘法运算template <class T> void ElementaryArithmetic<T>::multiplication(T operand1, T operand2){ result = operand1 * operand2;}//除法运算template <class T> void ElementaryArithmetic<T>::divide(T operand1, T operand2){ try{ //除数为0,出现异常 if ((operand2 - 0) < 1e-8 && (operand2 - 0) > -1e-8) throw 0; } catch (int){ throw ; } result = operand1 / operand2;}//输出运算符重载template <class E> ostream& operator<<(ostream &os, ElementaryArithmetic<E> &result){ os << endl << "计算结果 : " << result.operand1 << result.operators << result.operand2 << '=' << result.result << endl; return os;}//三角函数class Trigonometric{private: double radian; string type; double result;public: //三角函数计算 void Calculate(); //输出运算符重载 friend ostream &operator<<(ostream&, Trigonometric &);};//三角函数计算void Trigonometric::Calculate(){ int option;loop2: system("cls"); cout << "*******************" << endl; cout << "* 1.求正弦 *"<< endl; cout << "* 2.求余弦 *"<< endl; cout << "* 3.求正切 *"<< endl; cout << "*******************" << endl << endl; cout << "请输入菜单项(1-3):"; try{ cin >> option; if (option != 1 && option != 2 && option != 3 && option != 4) throw 2; } catch (int e){ cout << endl << "输入错误,请重新输入选项..." ; system("pause"); goto loop2; } cout << endl << "请输入弧度:"; cin >> radian; if (option == 1){ result = sin(radian); type = "sin"; } else if (option == 2){ result = cos(radian); type = "cos"; } else if (option == 3){ result = tan(radian); type = "tan"; }}//输出运算符重载ostream &operator<<(ostream &os, Trigonometric &result){ os << endl << "计算结果 : " << result.type << "(" << result.radian << ") = " << result.result << endl; return os;}int main(){ int type;loop: while (true){ system("cls"); cout << "*******主菜单**********" << endl; cout << "* *" << endl; cout << "* 1. 四则运算 *" << endl; cout << "* 2. 三角函数 *" << endl; cout << "* 3. 退出程序 *" << endl; cout << "* *" << endl; cout << "***********************" << endl << endl; cout << "请输入菜单项(1-3):"; try{ cin >> type; if (type != 1 && type != 2 && type != 3) throw - 1; if (type == 1){ ElementaryArithmetic<double> calc; calc.Calculate(); cout << calc; } else if (type == 2){ Trigonometric calc; calc.Calculate(); cout << calc; } else if (type == 3) break; } catch (int e){ if (e == -1){ cout << endl << "输入错误,请重新输入选项..."; system("pause"); goto loop; } else if (e == 0) cout << "除数不能为 0 " << endl; } cout << endl; system("pause"); } return 0;}
好吧,其实我也不知道为什么要求用模板和运算符重载,感觉没什么必要,典型的作业代码,不过也可能是我思想的局限性。总之,就这样吧。
0 0
- 简单计算器实现(C++)
- ANTLR实现简单计算器[C#]
- 《简单计算器实现(c#)》
- c/c++实现简单计算器
- C语言实现一个简单的计算器
- C语言 实现四则运算简单计算器
- GTK实现简单计算器(calculator.c)
- c-简单的计算器
- 计算器功能简单实现
- js简单实现计算器
- PHP实现简单计算器
- 简单的计算器实现
- 【简单计算器】实现加减乘除
- JSP实现简单计算器
- 简单计算器的实现
- 计算器简单实现
- 简单计算器的实现
- Java实现简单计算器
- 对JavaScript中call和apply的理解
- Linux 技巧:让进程在后台可靠运行的几种方法
- 利用Math类,JAVA输入圆半径打印相似圆
- 关于APM飞控中High Hdop的一些测试
- jQuery获取绑定自定义事件的元素
- c++实现简单计算器
- 第十二周 【项目4 - 点、圆的关系】
- 5.代理模式
- java 学习书籍-想精通java的必看
- Studio 总结
- sccanf的用法
- discuz 3 头像显示不成功
- 使用Hibernate框架连接数据库时出现乱码问题
- 线程池 ThreadPool 概念、应用实例