2014-03-19 6 views
0

나는 10 개의 요소로 구성된 배열을 가지고 있는데, 그 배열을 이동 평균에 맞게 만들 필요가 있습니다.C에서 정적 배열의 이동 평균

매번 3 개의 요소를 사용합니다 (예 : 인덱스 0-2의 요소의 평균, 1-3의 인덱스, 10의 인덱스까지, 다시 0과 1을 사용하여 새 배열에 정확하게 10 개의 요소가 있음) .

포인터를 사용하여 배열을 감싸는 것 (링 버퍼)을 사용하지 않는 것이 가장 좋은 방법은 무엇입니까?

+1

그래서 ... 지금까지 ... 당신의 접근 방식은 무엇입니까? –

+0

을 명확히하십시오. 따라서 평균 (0-2)은 새 배열, 평균 (1-3) 요소 1, 평균 (2-4) 요소 2 등의 요소 0이됩니까? – mangusta

+0

@mangusta 예 올바른 b와 c에 – user1397215

답변

1

코드에서 일부 경계를 확인하고 줄 바꿈 만하십시오.

아래의 예제 코드는 더 효율적으로 만들 수 있지만 명확성 (일종의)을 위해 이렇게 작성되었습니다. StackOverflow를 컴파일하는 것이 아니라 입력하기 때문에 약간의 실수가있을 수 있습니다.

int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 
int averages[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 

for (int i = 0; i < 10; i++) 
{ 
    int a = i; 
    int b = i + 1 > 9 ? i - 10 + 1; 
    int c = i + 2 > 9 ? i - 10 + 2; 

    int count = array[a] + array[b] + array[c]; 
    int average = count/3; // note this will truncate any decimal part 

    averages[i] = average; 
} 
+0

구문 오류가 있습니다. 내가 모듈 연산자 같은 것을 사용할 수 있다고 생각하니? 내가 9 살이 될 때? – user1397215

+0

b = (i + 1) % 10 대신에 괜찮 았던 것 – user1397215

+0

예 - 더 좋았습니다. 그 당시 생각하지 않았어. – Gigi