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

C言語の多次元配列とは?宣言方法と行・列の合計を求めるサンプルコード

C言語では、3次元以上の配列を扱うことができます。これを多次元配列と呼びます。

次元数の上限の正確な値は、使用するコンパイラによって決定されます。

多次元配列の宣言方法

多次元配列の宣言には、次の構文を使用します。

データ型 配列名 [サイズ1] [サイズ2] ・・・ [サイズn];

たとえば、3次元配列の場合は次のように宣言します。

int a[3][3][3];

この場合の要素数は、3 × 3 × 3 の 27個 となります。

サンプルプログラム:行・列ごとの合計を求める

以下は、実行時にキーボードから入力した値をもとに、5 × 5 の二次元配列について「行ごとの合計」と「列ごとの合計」を計算するCプログラムです。

#include <stdio.h>

int main(void){
    /* 配列と変数の宣言 */
    int A[5][5], i, j, row = 0, column = 0;

    /* 配列への要素の読み込み */
    printf("Enter elements into the array : \n");
    for(i = 0; i < 5; i++){
        for(j = 0; j < 5; j++){
            printf("A[%d][%d] : ", i, j);
            scanf("%d", &A[i][j]);
        }
    }

    /* 各行の要素の合計を計算 */
    for(i = 0; i < 5; i++){
        for(j = 0; j < 5; j++){
            row = row + A[i][j];
        }
        printf("The sum of elements in row number %d is : %d\n", i, row);
        row = 0;
    }

    /* 各列の要素の合計を計算 */
    for(j = 0; j < 5; j++){
        for(i = 0; i < 5; i++){
            column = column + A[i][j];
        }
        printf("The sum of elements in column number %d is : %d\n", j, column);
        column = 0;
    }

    return 0;
}

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

Enter elements into the array:
A[0][0] : 1
A[0][1] : 2
A[0][2] : 4
A[0][3] : 3
A[0][4] : 5
A[1][0] : 2
A[1][1] : 5
A[1][2] : 6
A[1][3] : 7
A[1][4] : 2
A[2][0] : 3
A[2][1] : 6
A[2][2] : 2
A[2][3] : 6
A[2][4] : 7
A[3][0] : 2
A[3][1] : 7
A[3][2] : 4
A[3][3] : 3
A[3][4] : 1
A[4][0] : 4
A[4][1] : 5
A[4][2] : 6
A[4][3] : 7
A[4][4] : 8
The sum of elements in row number 0 is : 15
The sum of elements in row number 1 is : 22
The sum of elements in row number 2 is : 24
The sum of elements in row number 3 is : 17
The sum of elements in row number 4 is : 30
The sum of elements in column number 0 is : 12
The sum of elements in column number 1 is : 25
The sum of elements in column number 2 is : 22
The sum of elements in column number 3 is : 26
The sum of elements in column number 4 is : 23

プログラムのポイント

  • 行の合計: 外側のループで行番号 i を固定し、内側のループで列方向(j)に沿って要素を加算します。
  • 列の合計: 逆に、外側のループで列番号 j を固定し、内側のループで行方向(i)に沿って加算します。
  • 変数のリセット: 各行・各列の計算が終わるたびに、合計用の変数(row / column)を 0 に戻すことを忘れないようにしましょう。

このように、二重ループと添字(インデックス)の操作方法を理解すれば、多次元配列に対するさまざまな集計処理をシンプルに実装できます。表形式のデータ処理や行列演算など、実践的な場面でも頻繁に活用される重要な概念なので、ぜひマスターしておきましょう。

  1. C言語でキューに要素を挿入する方法を徹底解説!基本概念からサンプルコードまで

    データ構造とは、データを体系的かつ効率的に整理・格納するための仕組みです。データ構造は、その構成方法によって大きく以下の2種類に分類できます。線形データ構造 − データが一直線上に順序立てて配置される構造です。例として、配列、構造体、スタック、キュー、連結リストなどが挙げられます。非線形データ構造 − データが階層的・網目的に配置される構造です。例として、木(ツリー)、グラフ、集合、テーブルなどが挙げられます。キュー(Queue)とはキューは線形データ構造の一つで、後端(リア/rear)から要素を挿入し、前端(フロント/front)から要素を削除するという特徴を持っています。キューにおけるデー

  2. C言語で配列の重複を削除し、ソート済みの一意な要素を出力する方法

    整数型の要素を持つ配列が与えられたとき、重複する値を取り除き、一意な(distinct)要素だけをソートして出力するのが本記事の目的です。例として、次のような整数値を格納した配列を考えてみましょう。4, 6, 5, 3, 4, 5, 2, 8, 7, 0この配列を単純にソートすると「0, 2, 3, 4, 4, 5, 5, 6, 7, 8」となりますが、この結果にはまだ重複値である 4 と 5 が含まれています。これらを削除し、最終的な出力結果は次のようになります。0, 2, 3, 4, 5, 6, 7, 8入力と出力の例Input: array[] = {4, 6, 5, 3, 4, 5,