1

私のクラスでは、ユーザーが最大 4 つのマトリックス ABCD を割り当て、malloc を使用して表示できるプロジェクトを実行する必要がありました。次の部分に進み、ユーザーが必要な行列を追加できるようにします。これは、行列を保存および表示するために完全に実行されている私のコードです:

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


void matrix_display(int ****matrix, int row_count, int column_count);


int main (void)
{
int row_size1,col_size1,row_size2,col_size2,flag =1;
int ****A[4];
int i = 0, j = 0;
char a,c;


do
{
printf("\ncmd> ");
c = getchar();


if(c == 'A')
{
scanf("%d %d",&row_size1,&col_size1);
A[0]= malloc(row_size1*sizeof(int*));
for(i=0;i<row_size1;i++)
{
A[0][i]=malloc(col_size1*sizeof(int));
}
for(i=0;i<row_size1;i++)
{
for(j=0;j<col_size1;j++)
    {
scanf("%d",&A[0][i][j]);


    }
}
matrix_display(A[0], row_size1, col_size1);
  }


if(c == 'B')
{
scanf("%d %d",&row_size1,&col_size1);
A[1]= malloc(row_size1*sizeof(int*));
for(i=0;i<row_size1;i++)
{
A[1][i]=malloc(col_size1*sizeof(int));
}
for(i=0;i<row_size1;i++)
{
for(j=0;j<col_size1;j++)
  {
scanf("%d",&A[1][i][j]);


       }
   }
matrix_display(A[1], row_size1, col_size1);
}


if(c == 'C')
{
scanf("%d %d",&row_size1,&col_size1);
A[2]= malloc(row_size1*sizeof(int*));
for(i=0;i<row_size1;i++)
{
A[2][i]=malloc(col_size1*sizeof(int));
}
for(i=0;i<row_size1;i++)
{
for(j=0;j<col_size1;j++)
 {
scanf("%d",&A[2][i][j]);


       }
   }
matrix_display(A[2], row_size1, col_size1);
}


if(c == 'D')
{
scanf("%d %d",&row_size1,&col_size1);
A[3]= malloc(row_size1*sizeof(int*));
for(i=0;i<row_size1;i++)
{
A[3][i]=malloc(col_size1*sizeof(int));
}
for(i=0;i<row_size1;i++)
{
for(j=0;j<col_size1;j++)
 {
scanf("%d",&A[3][i][j]);


       }
   }
matrix_display(A[3], row_size1, col_size1);
 }


 }
while(flag == 1);
 }


void matrix_display(int ****A, int row_size1, int col_size1) 
{
int i,j;
printf("The required matrix is\n");
for(i=0;i<row_size1;i++)
{
for(j=0;j<col_size1;j++)
  printf("%d ",A[i][j]);
  printf("\n");
}
for(i=0;i<row_size1;i++)
{
  free(A[i]);
}
free(A);
}

足し算の部分については、これを追加しました: これを実行する方法は次のとおりです: cmd> + AD (行列 A と D の足し算を表示します)

これを行う方法がわかりませんアドバイスをいただければ幸いです

私はこれを行うためのより簡単な方法を知っています. * *私は使用していませんが、今回は例外を作ってください

4

0 に答える 0