程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 實驗11:Problem B: 分數類的類型轉換,11problem

實驗11:Problem B: 分數類的類型轉換,11problem

編輯:C++入門知識

實驗11:Problem B: 分數類的類型轉換,11problem


Home Web Board ProblemSet Standing Status Statistics   Problem B: 分數類的類型轉換

Problem B: 分數類的類型轉換

Time Limit: 3 Sec  Memory Limit: 128 MB
Submit: 579  Solved: 431
[Submit][Status][Web Board]

Description

封裝一個分數類Fract,用來處理分數功能和運算,支持以下操作:   1. 構造:傳入兩個參數n和m,表示n/m;分數在構造時立即轉化成最簡分數。 2. show()函數:分數輸出為“a/b”或“-a/b”的形式,a、b都是無符號整數。若a為0或b為1,只輸出符號和分子,不輸出“/”和分母。 3. double類型轉換函數:用分子除以分母,得到的小數。注意:分子為0時不要輸出為“-0”   -----------------------------------------------------------------------------   你設計一個Fract類,使得main()函數能夠運行並得到正確的輸出。調用格式見append.cc  

 

Input

輸入多行,每行兩個整數,分別為分子和分母,至EOF結束。輸入的分母不會為0;  

 

Output

  每行輸出一個實數和分數,與輸入順序一致。實數為分子除以分母所得。   分數輸出時為最簡形式,負號只會出現在最前面,若分母為1或分子為0,則只輸出一個整數,即分子部分,而沒有“/”和分母部分。  

 

Sample Input

1 3 20 -15 80 150 -9 1 6 6 12 16 -33 -48 6 11 0 -10

Sample Output

0.333333 1/3 -1.33333 -4/3 0.533333 8/15 -9 -9 1 1 0.75 3/4 0.6875 11/16 0.545455 6/11 0 0

HINT

 

Append Code

append.c, append.cc,
[Submit][Status][Web Board]

한국어<   中文  فارسی  English  ไทย
All Copyright Reserved 2010-2011 SDUSTOJ TEAM
GPL2.0 2003-2011 HUSTOJ Project TEAM
Anything about the Problems, Please Contact Admin:admin

#include<iostream>
#include<cstdio>
using namespace std;
int cccc(int a,int b){
    if(!b)
        return a;
    return cccc(b,a%b);
}

class Fract{
public:
    int n,m;
    Fract(int a,int b):n(a),m(b)
    {
        int Max,Min,c,x,y;
        if(a<0) a*=-1;
        if(b<0) b*=-1;
        c=cccc(max(a,b),min(a,b));

        if(m<0)
        {
            n*=-1;
            m*=-1;
        }
        if(c!=1)
        {
            n/=c;
            m/=c;
        }
    }
    void show()
    {

        if(n==0||m==1)
            cout<<n<<endl;
        else
        {
            cout<<n<<"/"<<m<<endl;
        }
    }
    operator double()
    {
        return (double)n/m;
    }
};

int main()
{
    int n, m;
    while(cin >> n >> m)
    {
        Fract fr(n, m);
        cout << (double)fr << " ";
        fr.show();
    }
}

 

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