2014-12-27 1 views
0

는 여기에 내가있어 무엇 : 값이배열의 모든 값의 곱을 찾으려는 For 루프가 왜 각 배열 값을 알려주고 있습니까?

for (int x = 0; x < 20; x++) { 
    double product = day_changes[0]; 
    if (x > 0) { 
     product *= day_changes[x]; 
    } 
    cout << product << ", "; 
} 

기본적으로 이미 배열라고했다 "day_changes". 배열의 모든 값을 함께 곱하고 싶습니다.

나는 제품 [0] = day_changes [0]을 가질 수 있다고 생각했지만, 그 제품의 * day_changes [1] = product, 그래서 배열의 나머지 부분에 대해서도 그렇게하고 싶었다.

대신, 처음 입력 한 정확한 숫자를 얻고 있습니다.

1, 1.0211, 1.00308, 0.99995, 0.999939, 0.995816, 1.00394, 0.999062, 0.998132, 1.00014, 0.995925, 0.9892, 1.0127, 0.995615, 1.00294, 0.992832, 0.999695, 1.02132, 0.996056, 1, 

왜 이런 일이 : 여기

출력입니까?

+1

그 루프는 "배열의 첫 번째 항목"에 "현재 탐색중인 요소"를 인쇄하고 있습니다. –

+2

제품 결과를 루프 내부에 저장하므로 항상 첫 번째 요소로 재설정됩니다. (그러면 현재 요소로 곱합니다.) 바깥 쪽으로 이동하십시오 :'double product = 1/* 비어있는 제품. * /; for (...)'. – GManNickG

답변

1

첫 번째 문과 마지막 문을 for 루프 외부로 옮겨야합니다. 배열의 각 요소에 대해 제품을 다시 초기화하고 인쇄합니다.

1

루프 외부에서 적절한 값으로 product 초기화 : -

double product = 1.0;     <<<<< Initialize it. 
for (int x = 0; x < 20; x++) 
     product *= day_changes[x]; 
cout << product;       <<<<< yuppie I got correct value. 
+0

오 이런, 나는 바보 같아. 감사! –

0

당신 할 수 없습니다 액세스가 생성되는 블록 외부 변수입니다. 루프 앞에 double product=1.0을 선언하십시오.

관련 문제