Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

与えられた行列の対角要素を交換するCプログラム


問題

主対角要素を二次対角要素と交換するコードを書く必要があります。マトリックスのサイズは実行時に指定されます。

行列のサイズmとnの値が等しくない場合、指定された行列が正方形ではないことが出力されます。

主対角要素を交換でき、二次対角要素と交換できるのは正方行列だけです。

解決策

与えられた行列の対角要素を交換するCプログラムを書くための解決策は次のとおりです-

対角要素を交換するロジック 以下に説明します-

for (i=0;i<m;++i){
   a = ma[i][i];
   ma[i][i] = ma[i][m-i-1];
   ma[i][m-i-1] = a;
}

以下は、指定された行列の対角要素を交換するためのCプログラムです。 −

#include<stdio.h>
main (){
   int i,j,m,n,a;
   static int ma[10][10];
   printf ("Enter the order of the matrix m and n\n");
   scanf ("%dx%d",&m,&n);
   if (m==n){
      printf ("Enter the co-efficients of the matrix\n");
      for (i=0;i<m;++i){
         for (j=0;j<n;++j){
            scanf ("%d",&ma[i][j]);
         }
      }
      printf ("The given matrix is \n");
      for (i=0;i<m;++i){
         for (j=0;j<n;++j){
            printf (" %d",ma[i][j]);
         }
         printf ("\n");
      }
      for (i=0;i<m;++i){
         a = ma[i][i];
         ma[i][i] = ma[i][m-i-1];
         ma[i][m-i-1] = a;
      }
      printf ("Matrix after changing the \n");
      printf ("Main & secondary diagonal\n");
      for (i=0;i<m;++i){
         for (j=0;j<n;++j){
            printf (" %d",ma[i][j]);
         }
         printf ("\n");
      }
   }
   else
      printf ("The given order is not square matrix\n");
}

出力

上記のプログラムを実行すると、次の結果が得られます-

Run 1:
Enter the order of the matrix m and n
3x3
Enter the co-efficient of the matrix
1
2
3
4
5
6
7
8
9
The given matrix is
1 2 3
4 5 6
7 8 9
Matrix after changing the
Main & secondary diagonal
3 2 1
4 5 6
9 8 7

Run 2:
Enter the order of the matrix m and n
4x3
The given order is not square matrix

  1. Cプログラムの指定された行列のゼロの数でソートされた列のインデックスを出力します。

    サイズNxMの配列が与えられ、N行数とM列数であり、タスクは、任意の列に存在するゼロの数に基づいてソート操作を実行した後、対応する行列のすべての列のゼロの数を出力することです。 たとえば、1番目の st 列には1つのゼロと2つのndが含まれます 列にゼロと3番目のrdが含まれていません 列に2つのゼロが含まれている場合、結果は− 312になります。 例 Input:    0 0 0    1 1 1    1 0 1 Output: 1 3 2 説明 注 −マトリックスはインデックス1から開始したと見なされます。 例

  2. コーナー要素とその合計をCプログラムの2次元行列に出力します。

    サイズが2X2の配列を考えると、配列に格納されているすべてのコーナー要素の合計を出力することが課題になります。 行「r」と列「c」が0から行と列を開始する行列mat[r][c]を想定すると、そのコーナー要素は次のようになります。 mat [0] [0]、mat [0] [c-1]、mat [r-1] [0]、mat[r-1][c-1]。ここでのタスクは、これらのコーナー要素を取得し、それらのコーナー要素を合計することです。つまり、mat [0] [0] + mat [0] [c-1] + mat [r-1] [0] + mat [r-1] [c-1]、結果を画面に印刷します。 例 Input