C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,二则也为第10章做运算符重载等积累些感性认识。
任务要求:完成下面类的设计,并在main()函数中自行定义对象,调用各成员函数,完成基本的测试。
#include <iostream> using namespace std; class CFraction { private: int nu; int de; char c; public: CFraction(int nu = 0,int de = 1); void set(int nu = 0,int de = 1); void input(); void simplify(); void amplify(int n); void output(int style = 0); }; void CFraction::input() { cout<<"输入分数按照nu/de格式"<<endl; cin>>nu; cin>>c; cin>>de; } void CFraction::simplify() { int x; if(nu>de) x = de; else x = nu; for(int i = 2; i<=x;i++) { if(nu%i==0&& de%i==0) { nu = nu/i; de = de/i; i = 1; } } } void CFraction::amplify(int n) { cout<<"扩大5倍之后: "; nu = nu *n; de = de *n; cout<<nu<<"/"<<de<<endl<<endl; } void CFraction::output(int style) { switch(style) { case 0: cout<<nu<<"/"<<de<<endl; break; case 1: { simplify(); cout<<nu<<"/"<<de<<endl; break; } case 2: { simplify(); if(nu>de) { int x; int y; x = nu/de; y = nu%de; cout<<x<<"("<<y<<"/"<<de<<")"<<endl; } else { cout<<nu<<"/"<<de<<endl; break; } } cout<<"0"<<endl; } } CFraction::CFraction(int n,int d) { nu = n; de = d; } int main() { CFraction MM; MM.input(); MM.amplify(5); int n; cout<<"请输入n。当n=0时,按原式输出。"<<endl; cout<<"当n=1时,按最简输出。"<<endl; cout<<"当n=2,按几又几输出。"<<endl; cout<<"当未给出n的值时,输出为0"<<endl; cin>>n; MM.output(n); system("pause"); return 0; }