[問題] 分數約分的問題
詢問板友一個問題
下面是設計一個有關"隨機產生五個分數總加"的程式碼
(分數分母皆小於20) 但是輸出的分數並不會約分
所以請強者可以幫我看一下程式碼 要在哪裡加入約分的程式碼
好像是gcd 還是 Easiest 等等的 我有試過加進入還是一樣宣告錯誤
所以...拜託您了 謝謝
#include<iostream>
#include<time.h>
#include<vector>
#include<algorithm>
#define randomize() srand((unsigned)time(NULL))
using namespace std;
//定義分數類別
class Fraction{
public:
unsigned numerator;
unsigned denominator;
Fraction(){
do{
numerator = rand()%20;
denominator = rand()%20;
}while(denominator == 0 || numerator == 0);//分子分母不為0
}
Fraction operator +(Fraction f2);
bool operator >( Fraction f2);
};
//過載分數 + 運算子
Fraction Fraction::operator +(Fraction f2){
Fraction f;
unsigned a,b,c;
a = this->numerator*f2.denominator;
b = f2.numerator*this->denominator;
c = this->denominator*f2.denominator;
f.numerator=a+b;
f.denominator=c;
return f;
}
//定義產生物件的樣本函數
template<class T>
T NewElement(){
T ob;
return ob;
}
//定義加法樣本函數
template<class T>
T Add(T& ob1,T& ob2){
T ob;
ob = ob1 + ob2;
return ob;
}
//自訂函數物件樣本
template<class T>
struct large
{
bool operator()(T f1, T f2)const {
return f1 > f2;
}
};
const unsigned data_num = 5; //宣告資料數
//主程式
int main()
{
randomize();
vector<Fraction> F; //宣告分數型態的容器
for(int i=0; i<data_num; i++){
F.push_back(NewElement<Fraction>());//產生5個分數物件並且輸入容器
}
Fraction F_sum;
F_sum=F[0];
//加總分數
for(int i=1; i<data_num; i++)
F_sum = Add<Fraction>(F_sum, F[i]);
cout<<"分數和 ="<<F_sum.numerator<<"/"<<F_sum.denominator;
cout<<endl<<endl;
system("pause");
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 134.208.32.118
推
05/12 10:11, , 1F
05/12 10:11, 1F
→
05/12 10:16, , 2F
05/12 10:16, 2F
推
05/12 11:12, , 3F
05/12 11:12, 3F
推
05/12 11:24, , 4F
05/12 11:24, 4F
→
05/12 11:24, , 5F
05/12 11:24, 5F
→
05/12 11:26, , 6F
05/12 11:26, 6F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章