2011-10-30 9 views
0

拡張GCDアルゴリズムのアルゴリズムを次のように書いていますが、トリプルを返す方法はわかりません。誰でも助けてくれますか?私のトリプル構造体のコンストラクタを使用してそれを終了する方法拡張GCDアルゴリズム

#include<iostream> 
#include<math.h> 
using namespace std; 
int gcd(int a,int b) { return (b==0 ?a:gcd(b,a%b));} 
long long gcd(long a,long b) { return (b==0 ?a:gcd(b,a%b));} 
template<class Int> Int gcd(Int a,Int b) { return (b==0 ?a:gcd(b,a%b));} 
template<class Int> 
struct Triple 
{ 
    Int d,x,y; 
    Triple(Int q,Int w,Int e) :d(q),x(w),y(e)) {} 

}; 

//extended GCD 
/* computes d=gcd(a,b) 
also x and y such that d=a*x+y*b and return tripls (d,x,y) 
           */ 
template<class Int> 
Triple <Int> egcd(Int a,Int b) { 

    if(!b) return Triple<Int>(a,Int(1),Int(0)); 
    Triple<int>q=egcd(b,a%b); 
    return Triple<Int>(q.d,q.y,q.x-a/b*q.y); 
    } 

int main(){ 

    int a=35; 
    int b=13; 




return 0; 
} 

私は

+0

'C++ 11'で' std :: tuple'を見てみるといいでしょう。 –

答えて

2

(1)コンストラクタを修正して助けてください、それは(1つのブラケットを取り外す)コンパイルされません?

Triple(Int q,Int w,Int e) : d(q), x(w), y(e) {} 

(2 )main()で電話:

Triple <int> t = egcd(a, b); 
cout << t.d << ", " << t.x << ", " << t.y << endl; 
+0

皆さん、助けてくれてありがとうございますが、質問があります。私のアカウントはこのようなconstrantを持っています。30日後に50件以上の質問を投稿できません。それは当然か特別な制約ですか? –

+0

このような制限があるようです。http://meta.stackexchange.com/questions/89217/50-question-per-month-limitを参照してください。 http://meta.stackoverflow.com/でさらに調査することができます。 – Jiri