当前位置:编程学习 > C/C++ >>

5_2分数的各种运算

[cpp]
/* 
* 程序的版权和版本声明部分 
* Copyright (c)2012, 烟台大学计算机学院学生 
* All rightsreserved. 
* 文件名称: object.cpp 
* 作者:纪子龙 
* 完成日期: 2013年3  月 21 日 
* 版本号: v1.0 
* 输入描述:无 
* 问题描述:无 
* 程序输出:无 

/*
* 程序的版权和版本声明部分
* Copyright (c)2012, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: object.cpp
* 作者:纪子龙
* 完成日期: 2013年3  月 21 日
* 版本号: v1.0
* 输入描述:无
* 问题描述:无
* 程序输出:无[cpp] view plaincopyprint?*/ 
#include <iostream>  
using namespace std; 
class CFraction 

private: 
    int nume;  // 分子  
    int deno;  // 分母  
public: 
    void input();               //按照"nu/de"的格式,如"5/2"的形式输入  
    void simplify();                //化简(使分子分母没有公因子)  
    void amplify(int n);            //放大n倍,如2/3放大5倍为10/3  
    void output(int style=0);       //输出:以8/6为例,style为0时,原样输出8/6;  
    //style为1时,输出化简后形式4/3;  
    //style为2时,输出1(1/3)形式,表示一又三分之一;  
    //style为3时,用小数形式输出,如1.3333;  
    //不给出参数和非1、2,认为是方式0  
}; 
void CFraction::input()                 //按照"nu/de"的格式,如"5/2"的形式输入  

     
    cout<<"please input nume deno"<<endl; 
    cin>>nume>>deno; 

void CFraction::simplify()              //化简(使分子分母没有公因子)  

    int a,b,c,d; 
    int num1,num2,temp;              
    num1=nume; 
    num2=deno; 
    c=nume; 
    d=deno; 
    if(num1>num2) /*找出两个数中的较大值*/ 
    { 
        temp=num1; num1=num2; num2=temp; /*交换两个整数*/ 
    } 
    a=num1; b=num2; 
    while(b!=0) /*采用辗转相除法求最大公约数*/ 
    { 
        temp=a%b; 
        a=b; 
        b=temp; 
    } 
    c=c/a; 
    d=d/a; 
    cout<<c<<"/"<<d<<endl; 

void CFraction::amplify(int n)          //放大n倍,如2/3放大5倍为10/3  

    int a,b;                 
    a=nume; 
    b=deno; 
    a=a*n; 
    b=b*n; 
    cout<<a<<"/"<<b<<endl; 

void CFraction::output(int style) 

    if(style==3) 
    { 
        int a,b,e,t,i,c=3;  
        a=nume; 
        b=deno; 
        if (a>b)    
        { 
            cout<<a/b<<".";   
            for (i=1;i<c+1;i++)   
            {     
                t=a*10/b;    
                e=a%b;      
                a=e;     
                cout<<t;  
            } 
        }     
            cout<<endl;     
        if (a<b)     
        { 
            cout<<"0.";    
            for (i=1;i<c+1;i++)    
            {    
                t=a*10/b;    
                e=a%b;     
                a=e;    
                cout<<t;       
            }     
            cout<<endl;   
        }    
    } 
else 

    if(style==2) 
    { 
        int a,b,c=0; 
        a=nume; 
        b=deno; 
        while(a>=b) 
        { 
            a=a-b; 
            c++; 
        } 
         
        i

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,