2016-08-03 64 views
-1
#include "stdafx.h" 
#include <iostream> 

    using namespace std; 
// ==================== 

// ========================== 
    const unsigned int MIN_VALUE = 0; 
    const unsigned int MAX_VALUE = 4; 
    const int N = 4; 
// ================ 

// =================== 
// Function Prototypes 
// =================== 

//  ======================================== 
     void IntilizeGenerator(unsigned int a[]); 
     int RandomNumber(); 
     int SumArray(int a[], int& sum); 
     void Output(int a[], int sum); 
//  ============================== 

// ============ 
    int main() { 

     int sum; 
     int num[N]; 

     num[N-1] = RandomNumber(); 
     sum = SumArray(num, sum); 
     Output(num, sum); 


     cout << endl; 
     return 0; 
    }// Function Main() 
// =================== 

// ====================================== 
    void IntilizeGenerator(unsigned int a[]) { 
     srand(a[N]); 

    }// Function IntilizeGenerator() 
// ================================ 

// ======================= 
    int SumArray(int a[], int& sum) { 

     sum = 0; 
     int ii = 0; 

     while (ii < N) { 
      sum += a[ii]; 
      ii++; 
     } 

     return sum; 

    }// Function SumArray() 
// =======================  

// ==================== 
    int RandomNumber() { 

     return MIN_VALUE + rand() % (MAX_VALUE - MIN_VALUE + 1); 
    }// Function RandomNumber() 
// =========================== 

    void Output(int a[], int sum) { 

     cout << "The array contains about " << N << endl; 
     cout << "The array has these values " << a[N] << endl; 
     cout << "The sum of these numbers are " << sum << endl; 

    }// Function Output() 
// ===================== 

所以我是個遇到的問題是,我通過我的randomNumber功能到我的陣列,它不會產生這反過來又會不會把它們加起來的隨機數程序。我仍然試圖理解隨機數字生成器,所以任何意見,將非常感激!數組不總結和顯示隨機數

+0

您只生成一個隨機數,並將其分配給最後一個數組元素...數組的其餘部分未初始化,並將包含垃圾。同樣,你的Output例程只會從數組中打印出一個值(實際上你調用了未定義的行爲,通過使用超出數組大小的索引)。您是否期望這些操作以某種方式填充並打印整個陣列?這不是數組在C++中的工作方式。 –

+0

也強烈建議播種隨機數發生器。目前你有這樣做的功能,但它並沒有被調用。如果它有可能是'srand(a [N]);''會讀出a的邊界,將程序以免費的方式發送到[Undefined Behavior]的神奇之地(https: //en.wikipedia.org/wiki/Undefined_behavior)從字面上可以發生任何事情! – user4581301

回答

1

num[N-1] = RandomNumber();,您只需爲該數組的最後一項分配值,而不是該數組中的所有項。默認情況下,C++爲'int'類型生成默認值,但我們無法確定默認值是什麼(取決於編譯器)。 因此,不必這樣做,您必須使用使用RandomNumber()爲數組的所有項目分配值的循環。

for (int i = 0; i < N; i++){ 

num [i] = RandomNumber(); }

+0

啊!我看到,我正在使用像我在我的代碼中使用while循環,並在該循環中,我會設置num [i] = RandomNumber(),這將完成與我所設想的for循環相同的事情。 –