第五周实验报告2

来源:互联网 发布:视频上传网站源码 编辑:程序博客网 时间:2024/06/13 22:15
 /* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称:   class CFraction                           * 作    者:      刘程程                      * 完成日期:    2012     年   03    月     20   日* 版 本 号:     1.0     * 对任务及求解方法的描述部分* 输入描述: 分数的分子和分母* 问题描述: 化简* 程序输出: 化简后的分数的分子和分母* 程序头部的注释结束*/#include <iostream>using namespace std;int gcd(int x, int y);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();//按照“nu/de”的格式,如“5/2”的形式使用 void Simplify();//化简 void amplify(int n);//放大n倍 void output(int style = 0);};CFraction ::CFraction(int nu, int de){ if( de != 0) {  nume = nu;  deno = de; } else {   cout << "分母不能为0" <<endl;  system("pause");  exit(0); }} void CFraction :: Set(int nu, int de){ if( de !=0 ) {  nume = nu;  deno = de; }} void CFraction ::input(){ char c; int nu,de; while(1) {  cout << "输入分数(m/n):";  cin >> nu >>c >>de;  if(c != '/')   cout<<"格式不正确,请重新输入!"<<endl;  else if( de == 0)   cout << "分母不能为0"<<endl;       else     break; } nume = nu; deno = de;}void  CFraction :: Simplify(){     int n = gcd(nume, deno);   nume = nume/n;   deno = deno/n;}int gcd(int x, int y){ int r; while (y != 0) {  r = x % y;  x = y;  y = r; } return x;}void CFraction::amplify( int n){ nume *= n;}void  CFraction::output(int style){  int i,nu,de; switch(style) { case 0:  cout << nume << '/' << deno << endl;  break; case 1:   i = gcd(nume,deno);  cout << nume/i << '/' << deno/i << endl;  break; case 2:  i = gcd(nume,deno);  nu = nume / i;  de = deno / i;  cout << (nume / deno) << "("<<(nume %deno)<<'/'<<deno<<")"<<endl;  break; default:  cout << nume << '/'<< deno<< endl; }}int main(){    CFraction c1,c2(8,6);        cout<<"关于c1: "<<endl;      c1.output(0);        cout<<"改变c1: "<<endl;      c1.Set(2,7);      c1.output();     cout<<"输入c1: "<<endl;      c1.input();      c1.output(0);        cout<<"关于c2: "<<endl;      c2.output(0);      c2.output(1);       c2.output(2);              cout<<"将c2化简: "<<endl;      c2.Simplify();      c2.output(0);        cout<<"将c2放大倍: "<<endl;      c2.amplify(5);      c2.output(0);      c2.output(2);      system("pause"); return 0;}


  
通过自己不停调错,对这个程序有了更加深刻的了解!以后还要继续努力!大笑

原创粉丝点击