程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 第五周項目二

第五周項目二

編輯:C++入門知識

[cpp]
/*     
* 程序的版權和版本聲明部分     
* Copyright (c)2012, 煙台大學計算機學院學生     
* All rightsreserved.     
* 文件名稱:cf.cpp     
* 作者:王立強  
* 完成日期: 2013年4月3 日     
* 版本號: v1.0     
* 輸入描述:略    
* 問題描述:略     
* 程序輸出:略    
*/           
#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();               //按照"nu/de"的格式,如"5/2"的形式輸入    
    void simplify();            //化簡(使分子分母沒有公因子)    
    void amplify(int n);            //放大n倍,如2/3放大5倍為10/3    
    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::set(int nu,int de)    //置值,改變值時用    
{   
    if (de!=0) //如果不合適,改變值操作無效    
    {   
        nume=nu;   
        deno=de;   
    }   
}   
   
void CFraction::input() //按照"nu/de"的格式,如"5/2"的形式輸入    
{   
    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;   
}   
   
// 求m,n的最大公約數    
int gcd(int m, int n) //這個函數可以定義為類的成員函數,也可以為一般函數    
{   
    int r;   
    if (m<n){r=m;m=n;n=r;}   
    while(r=m%n)  // 求m,n的最大公約數    
    {   
        m=n;   
        n=r;   
    }   
    return n;   
}   
   
void CFraction::amplify(int n)  //放大n倍,如2/3放大5倍為10/3    
{   
    nume*=n;   
}   
//輸出分數:以/6為例    
//style為0時,原樣輸出8/6;    
//style為1時,輸出化簡後形式4/3;    
//style為2時,輸出1(1/3)形式,表示一又三分之一;    
//style為3時,用小數形式輸出,如1.3333;    
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()   
{   
    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(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;   
}   

/*    
* 程序的版權和版本聲明部分    
* Copyright (c)2012, 煙台大學計算機學院學生    
* All rightsreserved.    
* 文件名稱:cf.cpp    
* 作者:王立強 
* 完成日期: 2013年4月3 日    
* 版本號: v1.0    
* 輸入描述:略   
* 問題描述:略    
* 程序輸出:略   
*/         
#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();               //按照"nu/de"的格式,如"5/2"的形式輸入 
    void simplify();            //化簡(使分子分母沒有公因子) 
    void amplify(int n);            //放大n倍,如2/3放大5倍為10/3 
    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::set(int nu,int de)    //置值,改變值時用 

    if (de!=0) //如果不合適,改變值操作無效 
    { 
        nume=nu; 
        deno=de; 
    } 

 
void CFraction::input() //按照"nu/de"的格式,如"5/2"的形式輸入 

    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; 

 
// 求m,n的最大公約數 
int gcd(int m, int n) //這個函數可以定義為類的成員函數,也可以為一般函數 

    int r; 
    if (m<n){r=m;m=n;n=r;} 
    while(r=m%n)  // 求m,n的最大公約數 
    { 
        m=n; 
        n=r; 
    } 
    return n; 

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

    nume*=n; 

//輸出分數:以/6為例 
//style為0時,原樣輸出8/6; 
//style為1時,輸出化簡後形式4/3; 
//style為2時,輸出1(1/3)形式,表示一又三分之一; 
//style為3時,用小數形式輸出,如1.3333; 
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() 

    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(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; 

 

\

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved