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

C#で2つの行列を加算するプログラムの作成方法

C#では、2次元配列を使うことで行列を簡単に扱うことができます。この記事では、ユーザーが入力した2つの3×3行列を読み込み、対応する要素同士を足し合わせた結果を出力するプログラムを解説します。

まず、入力用の行列2つと、計算結果を格納するための配列1つ、合計3つの2次元配列を宣言します。

int[] arr1 = new int[20, 20];
int[] arr2 = new int[20, 20];
int[] arr3 = new int[20, 20];

今回は3×3の正方行列(合計9要素)を扱うため、行数・列数を表す変数 n に 3 を設定します。ユーザーからの入力は Console.ReadLine() で受け取り、Convert.ToInt32() で整数に変換しながら配列へ格納していきます。

行列の加算はとてもシンプルで、「同じ位置にある要素同士を足す」だけです。二重のforループを使い、すべての要素に対して次の処理を実行し、結果を3つ目の配列に格納します。

for(i=0;i<n;i++)
for(j=0;j<n;j++)
arr3[i,j]=arr1[i,j]+arr2[i,j];

それでは、C#で2つの行列を加算する完全なコードを見てみましょう。

サンプルコード

using System;
public class Exercise19 {
    public static void Main() {
        int i, j, n;
        int[] arr1 = new int[20, 20];
        int[] arr2 = new int[20, 20];
        int[] arr3 = new int[20, 20];
        // 行列の行数・列数を設定
        n = 3;
        Console.Write("1つ目の行列の要素を入力してください:\n");
        for (i = 0; i < n; i++) {
            for (j = 0; j < n; j++) {
                arr1[i, j] = Convert.ToInt32(Console.ReadLine());
            }
        }
        Console.Write("2つ目の行列の要素を入力してください:\n");
        for (i = 0; i < n; i++) {
            for (j = 0; j < n; j++) {
                arr2[i, j] = Convert.ToInt32(Console.ReadLine());
            }
        }
        Console.Write("\n1つ目の行列:\n");
        for (i = 0; i < n; i++) {
            Console.Write("\n");
            for (j = 0; j < n; j++)
            Console.Write("{0}\t", arr1[i, j]);
        }
        Console.Write("\n2つ目の行列:\n");
        for (i = 0; i < n; i++) {
            Console.Write("\n");
            for (j = 0; j < n; j++)
            Console.Write("{0}\t", arr2[i, j]);
        }
        for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
        arr3[i, j] = arr1[i, j] + arr2[i, j];
        Console.Write("\n2つの行列の和:\n");
        for (i = 0; i < n; i++) {
            Console.Write("\n");
            for (j = 0; j < n; j++)
            Console.Write("{0}\t", arr3[i, j]);
        }
        Console.Write("\n\n");
    }
}

実行結果

1つ目の行列の要素を入力してください:
1つ目の行列の要素を入力してください:

1つ目の行列:

000
000
000
2つ目の行列:

000
000
000
2つの行列の和:

000
000
000

コードのポイント

  • 2次元配列による行列の表現: int[] 型の配列を使うことで、行と列を持つ行列を直感的に扱えます。
  • 二重ループでの走査: 外側のループで行(i)、内側のループで列(j)を順番に処理し、すべての要素にアクセスします。
  • 要素ごとの加算: 行列の和は arr3[i,j] = arr1[i,j] + arr2[i,j] のように、同じ位置の要素同士を足すことで求められます。

なお、行列の加算が定義されるのは、2つの行列の行数と列数が一致している場合のみです。異なるサイズの行列を扱いたい場合は、事前にサイズのチェックを行うと安全です。

  1. C++で2つの2進数文字列を加算するプログラムの書き方

    2つの2進数を表す文字列が与えられたとき、それらを加算した結果を求め、その結果を2進数の文字列として返すことを考えます。2進数とは、0か1のいずれかで表現される数値のことです。2進数同士を足し合わせる際には、以下のような2進数特有の加算ルールに従う必要があります。0+0 → 0 0+1 → 1 1+0 → 1 1+1 → 0(繰り上がり1)入力例str1 = {11}, str2 = {1}出力例100入力例str1 = {110}, str2 = {1}出力例111問題を解くためのアプローチ両方の文字列を末尾(最下位桁)から走査する対応する桁の2進数同士を加算する1と1を足した場合は、その桁

  2. Pythonで2つの数値を加算するプログラム:ビット演算による実装方法

    この記事では、2つの数値を加算するという問題に対する解法とアプローチについて詳しく解説します。 問題の概要 2つの大きな数値が与えられ、それらを加算した結果を出力することが求められます。 最も単純なアプローチは、オペランド同士を「+」演算子で結ぶ方法です。また、2つの数値をリストなどのイテラブルに格納し、Python標準ライブラリに用意されている組み込み関数 sum() を利用する方法もあります。 しかし、これらのアプローチでは10進数に対して直接演算を行うため、計算コストが増大するという課題があります。 ビット演算を用いた別のアプローチ そこで次に、数値をビット単位で操作する別のアプローチを