/* 02.* 程序的版权和版本声明部分 03.* Copyright (c)2012, 烟台大学计算机学院学生 04.* All rightsreserved. 05.* 文件名称: object.cpp 06.* 作者:李全港 07.* 完成日期: 2013年4 月3 日 08.* 版本号: v1.0 09.* 输入描述:无 10.* 问题描述: 11.* 程序输出: 12.*/ #include <iostream> #include<Cmath> using namespace std; int gcd(int m,int n) class CFraction { private: int nume; int deno; 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); }; CFraction::CFraction(int nu,int de) { if(de!=0) { nume=nu; deno=de; } else { cerr<<"初始化中发生错误,程序退出\n"; system("pause"); exit(0); } } void CFraction::input() { int nu,de; char c; while(1) { cout<<"输入分数(m/n):"; cin>>nu>>c>>de; if(c!='/') cout<<"输入格式错误!\n"; else if(de==0) cout<<"分母不能为零!\n"; else break; } nume=nu; deno=de; } void CFraction::simplify() { int n=gcd(deno,nume); deno/=n; nume/=n; } int gcd(int m,int n) { int r; if(m<n){r=m;m=n;n=r;} while(r=m%n) { m=n; n=r; } return n; } void CFraction::amplify(int n) { nume*=n; } void CFraction::output(int style) { int n; switch(style) { case 0: cout<<"原样:"<<nume<<'/'<<deno<<endl; break; case 1: n=gcd(deno,nume); cout<<"化简形式:"<<nume/n<<'/'<<deno/n<<endl; break; case 2: cout<<"带分数形式:" <<nume/deno<<'('<<nume%deno<<'/'<<deno<<')'<<endl; break; case 3; cout<<" 近似值:"<<nume/double(deno)<<endl; break; default: cout<<"默认原样:"<<nume<<'/'deno<<endl; } } int main() { CFration c1,c2(8,6); cout<<"关于c1:"<<endl; c1.output(); cout<<"改变c1:"<<endl; c1.set(2,7); c1.output(); cout<<"输入c1:"<<endl; c1.output(); c1.output(0); cout<<"关于c2:"<<endl; c2.output(0); c2.output(1); c2.output(3); c2.output(3); c2.output(); cout<<"将c2化简:" <<endl; c2.simplify(); c2.output(0); cout<<" 将c2放大倍:" <<endl; c2.amplify(5); c2.output(0); c2.output(1); system("pause"); return 0; }
第五周上级项目二
最新推荐文章于 2014-10-23 14:59:57 发布