0

n 個の要素を持つ配列を取得し、絶対値が等しい配列の 2 つの連続した値があるかどうかをチェックするプログラムのコードを作成する必要があります。結果は次のように表示される必要があります。

|v[i]|=|v[i+1]|
|v[j]|=|v[j+1]|

そう

#include <stdio.h>
    int i,j,n;
    {
        int v[100];
        printf ("Please write n:");
        scanf("%d",&n);
        for (i=0;i<n,i++)
            printf( "Write the element %d",i);
        scanf("%d", &v[i]);
    }
    for (i=0;i<n;i++)
        abs(v[i])=abs(V[i+1]);
    printf("Elements are %d',v[i]");
    for (j=0;j<n;j++)
        abs(v[j])=abs(v[j+1]);
    printf("Elements are %d',v[j]");

これを実行すると、千のエラーのように表示されますが、間違いは論理的だと思います。どこが間違っているのか教えてもらえますか?

4

4 に答える 4

2

|絶対値機能としては使用できません。

abs()代わりに使用してください。

だからあなたは次のようなことをしているはずabs(v[i])です...

if (abs(v[i]) == abs(v[i+1]))

等々。

これが私が思いついたものです...

#include <stdio.h>
#include <stdlib.h>

main()
{
    int v[100];
    int n = -1, i;

    while (n < 1 || n > 100)
      {
            printf ("Please enter n (between 1 and 100):");

            scanf("%d",&n);
      }

    for (i=0;i<n;i++)
      {
        printf( "Enter element %d", i );
        scanf("%d", &v[i]);
      }

    for (i=0;i<n;i++)
      {
        if (abs(v[i]) == abs(v[i+1]))
        {
          printf ( "|v[%d]| = |v[%d]|\n", i, i+1);
        }
      }

    return 0;
}
于 2013-08-15T14:09:40.460 に答える
2

abs()絶対値には関数を使用します。stdlib.hこのためのヘッダーを含めます。
その他の修正:

#include <stdio.h>
#include <stdlib.h>

int main()
{
     int i,n;
     int v[100];
     printf ("Please write n:");
     scanf("%d",&n);
     for (i=0;i<n;i++)
     {
            printf( "Write the element %d\n",i);
            scanf("%d", &v[i]);
     }
     for (i=0;i<n-1;i++)
     {
            if(abs(v[i])==abs(v[i+1]))
                printf("|v[%d]|=|v[%d]|\n",i,i+1);
     }
     return 0;
}
于 2013-08-15T14:10:58.747 に答える
0

abs()関数が必要です。ブラケットが正しく設定されていることを確認する必要があります。配列をループするときも注意が必要です (範囲外になる可能性があります)。

ここに役立つものがあります:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,j,n;
    int v[100];
    printf ("Please write n: ");
    scanf("%d",&n);
    for (i=0;i<n;i++)
    {
        printf( "Write the element %d \n",i);
        scanf("%d", &v[i]);
    }
    for (i=1;i<n;i++)
    {
        if(abs(v[i-1])==abs(v[i]))
        {
            printf("Elements at positions %d and %j \n",i-1, i);            
            printf("Elements are %d and %d \n",v[i-1], v[i]);
        }  
    }
    for (j=1;j<n;j++)
    {
        if(abs(v[j-1])==abs(v[j]))
        {
            printf("Elements at positions %d and %j \n",j-1, j);
            printf("Elements are %d and %j \n",v[j-1], v[j]);
        }
    }

    return 0;
}
于 2013-08-15T14:13:17.043 に答える
0

「|x|」は使用できません 絶対値用。ステートメントとorビット単位のみ。

abs絶対に行うには、自分でコードを書くか、関数を使用する必要があります

その上、たくさんの synex エラーがあります

  • 主な機能なし
  • printf("Elements are %d',v[i]");そうではない、あなたはそうするつもりだったprintf("Elements are %d",v[i]);

いくつかの提案:

#include <stdio.h>
#include <stdlib.h>

main()
{
    int i,j,n;
    int v[100];
    printf("Please write n:");
    scanf("%d\n",&n);
    for (i=0;i<n,i++)
    {
       printf("Write the element %d",i);
       scanf("%d\n", &v[i]);
    }

    for (i=0;i<n-1;i++)
    {
     if(abs(v[i])==abs(V[i+1]))
        printf("Elements %d and %d are absolute equal", v[i], v[i+1]);
    }
}
于 2013-08-15T14:14:37.870 に答える