2016-08-03 2 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

단일 난수를 생성하고 마지막 배열 요소에 할당하면 나머지 배열은 초기화되지 않고 가비지가 포함됩니다. 마찬가지로 출력 루틴은 배열의 한 값만 인쇄합니다 (실제로 배열 크기의 범위를 벗어나는 인덱스를 사용하여 정의되지 않은 동작을 호출합니다). 이러한 작업이 어떻게 든 전체 배열을 채우고 인쇄 할 것이라고 기대 했습니까? 배열이 C++에서 작동하는 방식이 아닙니다. –

+0

난수 생성기를 시드하는 것이 좋습니다. 현재이 작업을 수행하는 기능이 있지만 호출되지는 않습니다. 그리고 그것이 확률이 좋다면'srand (a [N]);이 (가) 자유의 모든 비용 지출에 대한 프로그램을 보내어 [정의되지 않은 행동] (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 루프와 동일한 작업을 수행한다고 가정한다. –