ホームページ >バックエンド開発 >C++ >指定された行列の対角要素を交換する C プログラム

指定された行列の対角要素を交換する C プログラム

王林
王林転載
2023-08-25 18:02:031501ブラウズ

指定された行列の対角要素を交換する 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 プログラムです -

Real-時間デモ

#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</p><p>");
   scanf ("%dx%d",&m,&n);
   if (m==n){
      printf ("Enter the co-efficients of the matrix</p><p>");
      for (i=0;i<m;++i){
         for (j=0;j<n;++j){
            scanf ("%d",&ma[i][j]);
         }
      }
      printf ("The given matrix is </p><p>");
      for (i=0;i<m;++i){
         for (j=0;j<n;++j){
            printf (" %d",ma[i][j]);
         }
         printf ("</p><p>");
      }
      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 </p><p>");
      printf ("Main & secondary diagonal</p><p>");
      for (i=0;i<m;++i){
         for (j=0;j<n;++j){
            printf (" %d",ma[i][j]);
         }
         printf ("</p><p>");
      }
   }
   else
      printf ("The given order is not square matrix</p><p>");
}

出力

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

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 プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。