我正在嘗試執行我的項目,並且卡住了。如果我理解,我的教授希望我使用動態數組,並且有一個函數可以比較整數並得到它們的GCD。我不能讓這個功能起作用。有什麼想法嗎? 這裏是舞會:動態數組和函數
寫一個程序來計算任何有限整數集的最大公約數。使用函數來計算GCD。該集合中的元素數量不應該預先確定。當您輸入數據時,您需要編寫將要計數的代碼,集合中有多少個數字。以歐幾里德算法爲基礎。
我輸入10,100和40 GCD應該是10,但是,我得到這個結果:
The GCD of: is:
10 0
100 0
40 0
#include <iostream>
#include<iomanip>
using namespace std;
int greatestdivisor(int b[], int size); /*Write prototype for gcd */
int main()
{
int greatest;
int max=1;
int* a= new int[max]; //allocated on heap
int n=0;
cout<<"Input numbers: "<<endl;
cout<<"Hit Enter key after each input and type any letter to finish"<<endl;
while(cin>>a[n]){ //read into array
n++;
if(n>=max){
max=n; //increase size of array
int* temp = new int[max]; //creates new bigger array
for(int i=0;i<n;i++){
temp[i] = a[i]; //copy values to new array
} //end for
delete [] a; //free old array memory
a = temp; //a points to new array
} //end if
} // end while
cout<<endl;
greatest = greatestdivisor(a, max);
cout<<"The GCD of: "<<" is: "<<endl;
for(int j=0;j<max;j++)
cout<<setw(5)<<a[j]<<setw(10)<<greatest<<endl;
n++;// prints elements of array and call function
} // end main
// gcd finds greatest common divisor of array
int greatestdivisor(int b[], int size)
{
int greatest =1;// current greatest common divisor, 1 is minimum
for (int x=0; x<=size; x++) {
int m=b[x];
int r=2;
if(m%r==0){
greatest =m; // update greatest common divisor
} //end if
} // end for
return greatest; //return gcd
} // end fuction gcd
'我不能讓功能工作。'你的程序出了什麼問題,請提供更多細節。 – user657267 2014-10-31 06:02:28
當我運行它時,它顯示不正確的信息。它應該顯示10與我輸入的數據。 – Meeeeee 2014-10-31 06:06:35
如果您正在拍攝gcd算法,您的'mostdivisor'函數似乎不會做太多工作,而且它的測試條件應該是'x
WhozCraig
2014-10-31 06:07:34