查找数组是否为算术序列

时间:2015-10-15 10:38:27

标签: c arrays sorting pointers

所以我的要求是

  • 要求:n> = 1.元素a [0] ... a [n-1]存在。
  • PROMISES
    • 如果n == 1,则返回值为1.
    • 如果n> 1,如果[0] ... a [n-1]形式,则返回值为1 算术序列。
  • PROMISES 否则,返回值为0。

到目前为止,我的功能是

int is_arith_seq(const int *a, int n)
{
    assert(n >= 1);

    if (n == 1)
    return 1;

    int dif = a[0],i;

    for (i=0;i<n;i++)
    {
        dif = a[i]-a[i+1];
        if(dif=)


    }
}

仅运行一次的循环编辑,注释中有人指出

for (i=0;i<n;i++)
{
    currentdif = a[i+1]-a[i];
    if(initaldif!=currentdif)
        return 0;
}
        return 1;

你可以看到它不完整,因为我现在完全陷入困境,我该怎么做才能完成它?

2 个答案:

答案 0 :(得分:1)

提示:使用两个变量:firstdifcurrentdif

firstdif = a[1] - a[0];
for (i = 2; i < n; i++) {
    currentdif = a[i] - a[i - 1];
    // ...
}

答案 1 :(得分:0)

你只需要两个变量。 前两个术语之间的差异:diff0 任何其他连续两个项(a [i]和a [j])之间的差异:current_diff

现在,迭代数组直到current_diff == diff0。 如果访问所有元素,则数组表示算术系列 否则它没有。