增加数组中的间隔,检查

时间:2013-08-02 21:14:05

标签: c arrays

所以我试图检查先前输入的数组是否以1为间隔增加,从数字1开始,以n结尾(n是数组大小)。

这是我到目前为止所得到的:

    for (int i =0; i<n;i++){
                for (next=i;next<n;next++){
                    if(arr[i]+1 = arr[next]){
                        x = 1;  //ignore this, it relates to the rest of the code.
                    }
                    else{
                        printf ("\nThis is not a permutation.");
                        break;
                }
        }
}

现在,我的想法是这段代码会比较彼此相邻的参数,如果以下参数等于前一个+1,那么它显然会增加1.问题是,当这是假的时候,它不会打印“这不是一种排列”,并且不会打破循环。

任何帮助都将不胜感激。

此外,任何关于检查数组是否以数字1开头的见解都将不胜感激。

由于

4 个答案:

答案 0 :(得分:0)

看起来像这一行:

if(arr[i]+1 = arr[next]){

您打算比较:

if(arr[i]+1 == arr[next]){

答案 1 :(得分:0)

您是否尝试过if(arr[i]+1 == arr[next])而不是if(arr[i]+1 = arr[next]) ??

答案 2 :(得分:0)

如果您需要检查序列是否正在增加,为什么要将每个元素与其他元素进行比较?你应该只需要一个for循环:

for (i = 1; i < n; i++)
{
    if (arr[i - 1] + 1 == arr[i])
        ... // keep going
    else
        ... // not a permutation
}

基本上,你的代码所做的是检查每个元素之后,第i个元素大于第i个元素。最终,这会导致一种不可能的情况(因为两个数字必须相等但必须同时相差一个)。

答案 3 :(得分:0)

听起来你想要测试arr[0] == 1和每个后续数组元素是否1大于前一个元素。是否与检查数组[1,2,3,...,n]

相同
for (int i = 0; i < n; ++n) {
    if (arr[i] != i + 1) {
        printf("\nThis is not a permutation.");
        break;
    }
}