나는 10 개의 요소로 구성된 배열을 가지고 있는데, 그 배열을 이동 평균에 맞게 만들 필요가 있습니다.C에서 정적 배열의 이동 평균
매번 3 개의 요소를 사용합니다 (예 : 인덱스 0-2의 요소의 평균, 1-3의 인덱스, 10의 인덱스까지, 다시 0과 1을 사용하여 새 배열에 정확하게 10 개의 요소가 있음) .
포인터를 사용하여 배열을 감싸는 것 (링 버퍼)을 사용하지 않는 것이 가장 좋은 방법은 무엇입니까?
나는 10 개의 요소로 구성된 배열을 가지고 있는데, 그 배열을 이동 평균에 맞게 만들 필요가 있습니다.C에서 정적 배열의 이동 평균
매번 3 개의 요소를 사용합니다 (예 : 인덱스 0-2의 요소의 평균, 1-3의 인덱스, 10의 인덱스까지, 다시 0과 1을 사용하여 새 배열에 정확하게 10 개의 요소가 있음) .
포인터를 사용하여 배열을 감싸는 것 (링 버퍼)을 사용하지 않는 것이 가장 좋은 방법은 무엇입니까?
코드에서 일부 경계를 확인하고 줄 바꿈 만하십시오.
아래의 예제 코드는 더 효율적으로 만들 수 있지만 명확성 (일종의)을 위해 이렇게 작성되었습니다. 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;
}
구문 오류가 있습니다. 내가 모듈 연산자 같은 것을 사용할 수 있다고 생각하니? 내가 9 살이 될 때? – user1397215
b = (i + 1) % 10 대신에 괜찮 았던 것 – user1397215
예 - 더 좋았습니다. 그 당시 생각하지 않았어. – Gigi
그래서 ... 지금까지 ... 당신의 접근 방식은 무엇입니까? –
을 명확히하십시오. 따라서 평균 (0-2)은 새 배열, 평균 (1-3) 요소 1, 평균 (2-4) 요소 2 등의 요소 0이됩니까? – mangusta
@mangusta 예 올바른 b와 c에 – user1397215