1

助けてください....コンパイル時のエラーはありませんが、解決できない論理エラーがあります。入力は問題なくユーザーから取得されますが、要素は挿入されません。出力は、ユーザーが入力した変更されていない配列です。

void insert(int*,int);

void main()
{
    int a[10];
    int i,n,pos,x,j,z;
    clrscr();
    printf("Enter Size Of an array: ");
    scanf("%d",&n);
    printf("Enter Elements of an array: ");
    for(i=0;i<n;i++)
    {
        scanf("%d",a+i);
    }
    insert(a,n);
    printf("\nArray after Insertion of elements at 2nd & 5th Position\n");
    for(i=0;i<n;i++)
    {
        printf("\t%d\t",*a+i);
    }
    getch();
}

void insert(int *b, int n)
{
    if(n>=1)
    {
        printf("Insert Element at 2nd Position: ");
        scanf("%d",b+1);
    }
    if(n>=4)
    {
        printf("Insert Element at 5th Position: ");
        scanf("%d",b+4);
    }
}
4

5 に答える 5

2

「出力は、ユーザーが入力した変更されていない配列です。」

修理 :-

for(i=0;i<n;i++)
{
    printf("\t%d\t",*(a+i));  //Notice `()`
}

参考までに..これは挿入ではなく、単なる上書きです!

挿入の場合、次のようなものがあります。

/*
   b= original array
   n= size of array (must be large enough)
   pos = position of insertion

  After call make sure to scan array till n+1
*/
 void insert(int *b, int n, int pos)
 {
   int val,c;
   printf("Enter the value to insert\n");
   scanf("%d", &val);

   for (c = n - 1; c >= pos - 1; c--)
      b[c+1] = b[c];

   b[pos-1] = val;
 }
于 2013-08-25T19:33:47.543 に答える
1

a+i を括弧で囲んでみてください。

void main()
{
    int a[10];
    int i,n,pos,x,j,z;
    clrscr();
    printf("Enter Size Of an array: ");
    scanf("%d",&n);
    printf("Enter Elements of an array: ");
    for(i=0;i<n;i++)
    {
        scanf("%d",a+i);
    }
    insert(a,n);
    printf("\nArray after Insertion of elements at 2nd & 5th Position\n");
    for(i=0;i<n;i++)
    {
        printf("\t%d\t", /*SEE HERE */ *(a+i));
    }
    getch();
}
于 2013-08-25T19:38:01.137 に答える