找到奇数整数n#39; s中间数

时间:2014-11-15 11:40:38

标签: c arrays

好的,所以要清楚我正在计算距离。如果数字是偶数,那么它很容易计算,但是如果它很奇怪,我有一个想法,但我无法应用它。任务听起来像这样:我需要找到物体之间的距离。例如给定数据:

4 // how many objects (n)
4 10 0 12 every object's distance
After sorting the numbers ( im using arrays ) the answer is: (4-0)+(12-10)=6;

所以我的代码在排序偶数后似乎是正确的,但是当数字是奇数计算时是这样的:

5 (n)
4 10 0 12 2
Answer= (2-0)+(4-2)+(12-10)=6;

所有我需要做的(我认为)是当有一半奇数并执行某个功能时停止功能;这是我的代码:

if(n%2!=0){
for(i=0;i<n;i++){
    if(i==((n/2)+1)){ // THIS PART
        length+=mas[(n/2)+1]-mas[n/2];
        i++;
        break;
    }
    length+=mas[i+1]-mas[i];
    i++;
}
}

1 个答案:

答案 0 :(得分:0)

#include <stdio.h>

int sum_distance(int n, int a[n]){
    if(n < 2)
        return 0;
    int sum = 0;
    int i=0;
    if(n & 1){//n is odd
        sum = a[1] - a[0];
        ++i;
    }
    for(;i<n; i+=2){
        sum += a[i+1] - a[i];
    }
    return sum;
}

int main(){
    int a[4] = { 0, 4, 10, 12};
    int b[5] = { 0, 2, 4, 10, 12};//they are sorted

    printf("%d\n", sum_distance(4, a));//6
    printf("%d\n", sum_distance(5, b));//6

    return 0;
 }