web-dev-qa-db-ja.com

Cで基本行列を作成します(ユーザーが入力します!)

マトリックスに必要な列と行の数を入力し、マトリックスに値を入力するようにユーザーに依頼しようとしています...一度に1行ずつ数値を挿入できるようにします。

そのような関数を作成するにはどうすればよいですか?

#include<stdio.h>
main(){

int mat[10][10],i,j;

for(i=0;i<2;i++)
  for(j=0;j<2;j++){
  scanf("%d",&mat[i][j]);
  } 
for(i=0;i<2;i++)
  for(j=0;j<2;j++)
  printf("%d",mat[i][j]);

}

これは数字を入力するために機能しますが、すべてを1行で表示します...ここでの問題は、ユーザーが必要とする列または行の数がわからないため、%d%d%dを印刷できないことです。行列形式...

何かご意見は?

ありがとう:)

7
NLed

次はどうですか?

最初にユーザーに行と列の数を尋ね、それをnrowsncols(つまりscanf("%d", &nrows);)に保存してから、 メモリを割り当てます2D配列 サイズnrows x ncolsしたがって、ユーザーが指定したサイズのマトリックスを使用できますが、ハードコーディングしたいくつかの次元で固定することはできません!

次に、for(i = 0;i < nrows; ++i) ...で要素を保存し、すべての行の後に改行を入れることを除いて、同じ方法で要素を表示します。

for(i = 0; i < nrows; ++i)
{
   for(j = 0; j < ncols ; ++j) 
   {
      printf("%d\t",mat[i][j]);
   }
printf("\n");
}
11
Jacob

マトリックスを動的に割り当てる必要があります。例えば:

int* mat;
int dimx,dimy;
scanf("%d", &dimx);
scanf("%d", &dimy);
mat = malloc(dimx * dimy * sizeof(int));

これにより、行列を保持できる線形配列が作成されます。この時点で、列または行のどちらに最初にアクセスするかを決定できます。マトリックスの正しいオフセットを計算するクイックマクロを作成することをお勧めします。

3
Yann Ramin

これが私の答えです

#include<stdio.h>
int main()
{int mat[100][100];
int row,column,i,j;
printf("enter how many row and colmn you want:\n \n");
scanf("%d",&row);
scanf("%d",&column);
printf("enter the matrix:");

for(i=0;i<row;i++){
    for(j=0;j<column;j++){
        scanf("%d",&mat[i][j]);
    }

printf("\n");
}

for(i=0;i<row;i++){
    for(j=0;j<column;j++){
        printf("%d \t",mat[i][j]);}

printf("\n");}
}

行と列の近似値を選択するだけです。選択した行または列は値を超えません。その後、マトリックス要素をスキャンし、マトリックスサイズにします。

1
TonuSree

必要

for(i=0;i<2;i++)
{
  for(j=0;j<2;j++)
  {
     printf("%d",mat[i][j]);
  }
  printf("\n");
}
1
Keith Nicholas
#include<stdio.h>
int main(void)
{  
int mat[10][10],i,j;

printf("Enter your matrix\n");  
for(i=0;i<2;i++)
  for(j=0;j<2;j++)
  {  
    scanf("%d",&mat[i][j]);  
  }  
printf("\nHere is your matrix:\n");   
for(i=0;i<2;i++)    
{  
    for(j=0;j<2;j++)  
    {  
      printf("%d ",mat[i][j]);  
    }  
    printf("\n");  
  }  

}
1
jeff
int rows, cols , i, j;
printf("Enter number of rows and cols for the matrix: \n");
scanf("%d %d",&rows, &cols);

int mat[rows][cols];

printf("enter the matrix:");

for(i = 0; i < rows ; i++)
    for(j = 0; j < cols; j++)
        scanf("%d", &mat[i][j]);

printf("\nThe Matrix is:\n");
for(i = 0; i < rows ; i++)
{
    for(j = 0; j < cols; j++)
    {
        printf("%d",mat[i][j]);
        printf("\t");
    }
    printf("\n");
}

}