分数的加减乘除(C++的有理数类)
2015-06-09 18:23
736 查看
#include <iostream> #include <cstdio> using namespace std; class Number{ int numerator,denominator; public: void input(int a,int b) { numerator=a; denominator=b; } void output(int &a,int &b) { a=numerator; b=denominator; } }; int fun(int a,int b) { int temp; if(a<b) { temp=a; a=b; b=temp; } while(b) { temp=a; a=b; b=temp%b; } return a; } void add(Number num1,Number num2) { int num_num1,num_num2,num_den1,num_den2; int temp,temp1,temp2; num1.output(num_num1,num_den1); num2.output(num_num2,num_den2); temp=num_den2*num_den1; temp1=num_num1*num_den2; temp2=num_num2*num_den1; temp1=temp1+temp2; int index=fun(temp1,temp); temp1=temp1/index; temp=temp/index; printf("%d/%d + %d/%d = %d/%d\n",num_num1,num_den1,num_num2,num_den2,temp1,temp); } void subtract(Number num1,Number num2) { int num_num1,num_num2,num_den1,num_den2; int temp,temp1,temp2; num1.output(num_num1,num_den1); num2.output(num_num2,num_den2); temp=num_den2*num_den1; temp1=num_num1*num_den2; temp2=num_num2*num_den1; temp1=temp1-temp2; int index=fun(temp1,temp); temp1=temp1/index; temp=temp/index; printf("%d/%d + %d/%d = %d/%d\n",num_num1,num_den1,num_num2,num_den2,temp1,temp); } void multiply(Number num1,Number num2) { int num_num1,num_num2,num_den1,num_den2; int temp1,temp2; num1.output(num_num1,num_den1); num2.output(num_num2,num_den2); temp1=num_num1*num_num2; temp2=num_den1*num_den2; int index=fun(temp1,temp2); temp1=temp1/index; temp2=temp2/index; printf("%d/%d * %d/%d = %d/%d\n",num_num1,num_den1,num_num2,num_den2,temp1,temp2); } void divide(Number num1,Number num2) { int num_num1,num_num2,num_den1,num_den2; int temp1,temp2; num1.output(num_num1,num_den1); num2.output(num_num2,num_den2); temp1=num_num1*num_den2; temp2=num_den1*num_num2; int index=fun(temp1,temp2); temp1=temp1/index; temp2=temp2/index; printf("%d/%d / %d/%d = %d/%d\n",num_num1,num_den1,num_num2,num_den2,temp1,temp2); } int main() { Number num1,num2; int n,a,b,peace=0; cout<<"please input numerator and denominator.\n"; cout<<"first number:"; cin>>a>>b; num1.input(a,b); cout<<"last number:"; cin>>a>>b; num2.input(a,b); while(1) { cout<<" 1.Change numerator and denominator.\n"; cout<<" 2.Add\n"; cout<<" 3.Subtract\n"; cout<<" 4.Multiply\n"; cout<<" 5.Divide\n"; cout<<" 6.end\n"; cout<<"Please input a choose:"; cin>>n; switch(n) { case 1: cout<<"first number:"; cin>>a>>b; num1.input(a,b); cout<<"last number:"; cin>>a>>b; num2.input(a,b); break; case 2: add(num1,num2); break; case 3: subtract(num1,num2); break; case 4: multiply(num1,num2); break; case 5: divide(num1,num2); break; case 6: peace=1; break; } if(peace) break; } return 0; }
相关文章推荐
- 分数的四则运算(c++)
- C++中map容器的说明和使用技巧
- C++中四种强制类型转换
- C++基础知识总结
- VC++ 完整的例子(电话本管理)
- c++ explicit
- 多线程--线程概述
- C++ 优先队列
- C++ union 和struct的使用
- 《C++语言基础》实践参考——二进制文件浏览器
- C++字符数组的赋值
- 《C++语言基础》实践参考——用二进制文件处理学生成绩
- 《C++语言基础》实践项目——二进制文件及文件的随机读写
- 《C++语言基础》程序阅读——二进制文件及文件的随机读写
- C++ 多重集的使用
- VC++ 使用 typedef, Tuple, Array 来模拟一个对象的列表,并对列表进行增减、赋值和访问,
- C++ set使用
- VC++6.0 classview类不见了的情况
- 深入解析C++ STL中的常用容器
- VS2010 C++ MFC框架学习笔记4 - C++面向对象编程基础2