第五周实验报告2

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:       求一系列分数                      
* 作    者:      王智凯                        
* 完成日期:        12 年    3   月     19   日
* 版 本 号:          
 
* 对任务及求解方法的描述部分
* 输入描述: 
* 问题描述: 
* 程序输出: 
* 程序头部的注释结束
*/
 

 
#include <iostream>
using namespace std;
class CFraction
{
public:
   CFraction(int nu=0,int de=1);
   void Set(int nu=0,int de=1);
   void input();
   int get_common_divisor();
   void Simplify();
   void amplify(int n=2);
   void output(int style=0);
private:
  int nume;
  int  deno;
  int inp;
  int Simp;
  int ampli;
  int m;
  int d;
  
};

CFraction::CFraction(int nu, int de)
    nume = nu; 
    deno = de;
    
 

void CFraction::Set(int nu,int de)
{
   nume = nu;
 deno = de;

}

 


void CFraction::input()
 {
  char a;  
 
   cout << "输入分数:(格式:nu / de)" << endl;  
  
   while(1)    
    {    
        cin >> nume >> a >> deno;    
  
       if(a != '/')    
       {    
            cout << "格式不正确,请重新输入!" << endl;  
    }
 
       else  
   {
            break;
   }
   }

      cout<<"该分数为:"<<endl;
  cout<< nume << "/" << deno << endl ;
 }

 


int CFraction::get_common_divisor()
{
 int max,min,x;
   if(deno > nume)
   {
   max = deno;
      min = nume;
   }
   else
   {
    max = nume;
    min = deno;
   }

   while (min != 0)
   {
   x =min;
  min =max % min;  
  max = x;
   }
    return max; 

}


 void CFraction::Simplify()//化简
 {
  
 m = nume / get_common_divisor();
 d = deno / get_common_divisor();
  cout<< m <<"/"<< d <<endl;
 }
   
    

 
 
void CFraction::amplify(int n)
{
 ampli = n * m ;
 cout<<ampli<<"/"<< d <<endl;
}
 

void CFraction::output(int style)
{ 
    double x;
 double y;
 switch(style)
 { 
     case 0:
       cout << nume << "/" << deno << endl;
      break;
  case 1:
      cout << m << "/" << d << endl;
       break;
  case 2:
   x = m / d;
   y = m % d;
   cout << x << "(" <<y << "/" << d << ")" << endl;
   break;
  
  default:;
 }
}


void main( void)
{

 CFraction C1;
 C1.Set(3,7);
 C1.input();
 cout<<"化简后为:"<<endl;
  C1.Simplify();
  cout<<"扩大3倍后为:"<<endl;
   C1.amplify(3);
    cout<<"当输入2 时变为:"<<endl;
   C1.output(2);
}


 



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值