与えられた行列の対角要素を交換する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
-
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から開始したと見なされます。 例
-
コーナー要素とその合計を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