2013-05-03 1 views
2

저는 한 시간 반 동안 C++ 문제에 걸렸습니다. 다음은 질문입니다.랜덤 정수/어커런스 (C++) 문제

0에서 9 사이의 100 개의 임의의 정수를 생성하고 각 숫자의 수를 표시하는 프로그램을 작성하십시오. (힌트 : % 10을 사용하여 0에서 9 사이의 임의의 정수를 생성하십시오. 카운트라고하는 10 개의 정수 배열을 사용하여 O, l, ..., 9의 수에 대한 카운트를 저장하십시오 .)

그리고 내가 지금까지 가지고있는 것이있다. 나는 거의 가깝다고 생각하지만 각 무작위 정수의 발생 (또는 카운트)에 대해 "0"을 계속 유지합니다. 어떤 도움이라도 대단히 감사하겠습니다.

const int SIZE = 100; 

int main() 
{ 
int integers[SIZE]; 
int index; 
int zero = 0; 
int one = 0; 
int two = 0; 
int three = 0; 
int four = 0; 
int five = 0; 
int six = 0; 
int seven = 0; 
int eight = 0; 
int nine = 0; 

cout << "The following 100 integers are random:" << endl; 
cout << endl; 

srand(time(0)); 

for (index = 0; index < SIZE; index++) 
{ 
    integers[SIZE] = rand() % 10; 
    cout << integers[SIZE] << " "; 
} 

cout << endl; 

for (index = 0; index < SIZE; index++) 
{ 
    if (integers[index] == 0) 
    { 
     zero += 1; 
    } 
} 

for (index = 0; index < SIZE; index++) 
{ 
    if (integers[index] == 1) 
    { 
     one += 1; 
    } 
} 

for (index = 0; index < SIZE; index++) 
{ 
    if (integers[index] == 2) 
    { 
     two += 1; 
    } 
} 

for (index = 0; index < SIZE; index++) 
{ 
    if (integers[index] == 3) 
    { 
     three += 1; 
    } 
} 

for (index = 0; index < SIZE; index++) 
{ 
    if (integers[index] == 4) 
    { 
     four += 1; 
    } 
} 

for (index = 0; index < SIZE; index++) 
{ 
    if (integers[index] == 5) 
    { 
     five += 1; 
    } 
} 

for (index = 0; index < SIZE; index++) 
{ 
    if (integers[index] == 6) 
    { 
     six += 1; 
    } 
} 

for (index = 0; index < SIZE; index++) 
{ 
    if (integers[index] == 7) 
    { 
     seven += 1; 
    } 
} 

for (index = 0; index < SIZE; index++) 
{ 
    if (integers[index] == 8) 
    { 
     eight += 1; 
    } 
} 

for (index = 0; index < SIZE; index++) 
{ 
    if (integers[index] == 9) 
    { 
     nine += 1; 
    } 
} 

cout << "The number of zeros in the random list are " << zero << endl; 
cout << "The number of ones in the random list are " << one << endl; 
cout << "The number of twos in the random list are " << two << endl; 
cout << "The number of threes in the random list are " << three << endl; 
cout << "The number of fours in the random list are " << four << endl; 
cout << "The number of fives in the random list are " << five << endl; 
cout << "The number of sixes in the random list are " << six << endl; 
cout << "The number of sevens in the random list are " << seven << endl; 
cout << "The number of eights in the random list are " << eight << endl; 
cout << "The number of nines in the random list are " << nine << endl; 

getch(); 

return 0; 

} 

답변

7

당신이 당신의 배열 인덱스 대신 indexSIZE를 사용하고 있기 때문에 당신은 정의되지 않은 동작이 있습니다

for (index = 0; index < SIZE; index++) 
{ 
    integers[SIZE] = rand() % 10; 
    cout << integers[SIZE] << " "; 
} 

범위 0에서이기 때문에 이것은 (배열의 경계의 외측에 액세스 할 ~ SIZE-1). 루프 본문 내에서 SIZEindex으로 변경하십시오.

그러나 문제 설명을 다시 읽는 것이 도움이 될 것이라고 생각합니다. 특히 :

10 개 정수의 배열을 사용하여, 당신은 대신 저장하는 배열을 사용하는

, 1 초, ..., 9S 0의 수를 카운트를 저장하기 위해, counts 말하여 난수. 이것은 전혀 필요하지 않습니다. 생성 된 번호를 추적 할 필요가 없습니다. 적절한 카운트에 1을 더하는 것만으로 난수를 버릴 수 있습니다. 0의 수는 지금까지이야 counts[0] 저장, counts[1] 상점 등 1의 수는, 그럼 당신은 zero라는이 끔찍한 변수가 필요하지 않습니다

당신은 단순히 배열 counts라고해야, one, two, 등등. 변수 이름을 (그 안에 숫자가 늘어남에 따라) 정의하는 자신을 발견하게되면 아마 배열을 대신 사용해야 할 것입니다.

+0

감사합니다. 이것은 상당히 도움이되었습니다. – jtarr523

+1

@ jtarr523 동일한 코드를 반복해서 복사하기 시작할 때마다 항상 자신이하는 일을 재고해야합니다. –

+0

@ jtarr523 도움이된다면 답을 받아 들여야한다는 것을 잊지 마십시오. –