0

私のプログラムを理解し、完成させるためにあなたの助けを求めたいです。

これは私がしなければならないことです:

「プログラムを実行する必要があります
。最初に、吸収する 2 次元の整数 arr [M] [N]。M - 行数 N - 列数。(行列サイズはユーザーから受け取りました)
2 つ。プログラムは補助関数を使用します。 「シフト」は、図に示すように、行列の値を右に 1 桁移動します (1 の代わりに 2、2 の代わりに 3、3 の代わりに 4、... 19 の代わりに 20、最初の 20 の代わりに入力) ).
Shift は関数を作成し、サンプル マトリックス ループで 3 回呼び出す必要があります.."

ここに画像の説明を入力

私の問題は次のとおりです。

  1. ユーザーがサイズを入力した2次元整数配列の行列を作成する方法がわかりません。行と列の DEFINE SIZE によってのみ知っています
  2. 私の役職は実際の仕事にはほど遠いので、役職を終えるのに助けが必要です。

私の出力:

私の処刑

私のコード:

#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#define M 4
#define N 5
void shift (int arr[M][N], int length); 

void main()
{
    int arr[M][N];
    int i,j,length;

    printf("Enter %d rows \n",M);
    for (i=0 ; i<M ; i++ )
    {
        printf("Enter %d numbers:\n",N);
        for(j=0 ; j<N ; j++ )
        { 
            scanf("%d" , &arr[i][j] );
        }
    length=N+M;
    }
    shift (arr,length);
    system("pause");
    return ;
}

void shift (int arr[M][N], int length) 
{    
    int i,j,temp;
    temp=arr[0][0];
    for(i=0; i<M; i++)
    {
             for(j=0; j<N-1 ; j++)
             {
                 printf("%d ",arr[i][j]);

             }
             arr[i][j]=temp;
             printf("\n");
    }
} 

編集:写真のリサイズ

4

2 に答える 2

0

要素の移動方法のヒントを教えてください。ロジックは、繰り返しながら、行の現在の要素と最後の要素の間で要素を交換することです。1D 配列の実際の例を示します。

#include <stdio.h>

#define ARRAY_SIZE 5

int main()
{
    int a[ARRAY_SIZE] = {11,22,33,44,55};
    int i;

    for (i=0; i<ARRAY_SIZE; ++i)
    {
        int temp = a[i];
        a[i] = a[ARRAY_SIZE-1];
        a[ARRAY_SIZE-1] = temp;
    }

    for(i=0; i<ARRAY_SIZE; ++i)
    {
        printf("%d\t",a[i]);
    }

    return 0;
}

出力: 55 11 22 33 44

配列のメモリを動的に割り当てるには、 を使用しますmalloc。それが役に立てば幸い !

于 2013-09-13T14:16:12.053 に答える