人工知性を作りたい

私が日々、挑戦したことや学んだことなどを紹介していく雑記ブログです。 (新しいAI技術HTM, 専門の音声信号処理, 趣味のアニメ等も書いてます。)

2次元配列 行(横)列(縦)の扱い方 -縦、横の合計【C言語プログラミング】

f:id:hiro-htm877:20190601191549p:plain

 

f:id:hiro-htm877:20190601202549p:plain

 

プログラミング初心者、学生

「2次元配列習ったけど、操作したい要素がどこか分からなくなる」

 

そんな方の疑問に答えます。

コードが知りたい方は目次のソースコードへ飛んでください!

本記事のテーマ

【完全初心者向け】2次元配列の扱い方を学ぶ!

2次元配列の縦横の合計!

条件

・2次元配列 int aray[4][10]を宣言

アルゴリズム

文字列を数値に変換

1. 二重ループを作成する

2. 縦横の合計を格納する変数に必要な要素を加算していく

 

 

2次元配列、縦横合計プログラム実装!

合計プログラムは、 

1.  for(i=0; i<4; i++){

 ←1重目のループ(行列の行(横)) 

2. for(j=0; j<10; j++){

 ←2重目のループ(行列の列(縦))

3. sum += aray[i][j];

 ←縦横全合計を加算

4.  sum_tate[j] += aray[i][j];

 ←縦の加算

5.  sum_yoko[i] += aray[i][j];

 ←横の加算

2次元配列、縦横合計コード

2次元配列を扱う時の2重ループは

・1重目: 行のループ

・2重目: 列のループ

ですので、

行の合計を取るときは、1重目のループの変数(今回は'i')、

列の合計を取るときは、2重目のループの変数(今回は'j')

を用いる。

for(i=0; i<4; i++){
        for(j=0; j<10; j++){
            sum += aray[i][j];
            sum_tate[j] += aray[i][j];
            sum_yoko[i] += aray[i][j];
        }
    }
    printf("sum: %d\n", sum);
    printf("\n");
    for(i=0;i<4;i++){
        printf("sum_yoko[%d]: %d\n", i, sum_yoko[i]);
    }
    printf("\n");
    for(i=0;i<10;i++){
        printf("sum_tate[%d]: %d\n", i, sum_tate[i]);
    }
出力 

sum: 280

 

sum_yoko[0]: 55

sum_yoko[1]: 65

sum_yoko[2]: 75

sum_yoko[3]: 85

 

sum_tate[0]: 10

sum_tate[1]: 14

sum_tate[2]: 18

sum_tate[3]: 22

sum_tate[4]: 26

sum_tate[5]: 30

sum_tate[6]: 34

sum_tate[7]: 38

sum_tate[8]: 42

sum_tate[9]: 46

完成です!

2次元配列の縦横合計プログラムを実装しました。

2次元配列は画像処理など、使用する場面が多いのでここで理解しておきましょう!

main文を含む全ソースコードは以下に示します。 

ソースコード

#include <stdio.h>
void enshu0609(void);
int main() {
    enshu0609();
    return 0;
}

void enshu0609(void){
    int aray[4][10] = {{1,2,3,4,5,6,7,8,9,10}, {2,3,4,5,6,7,8,9,10,11}, {3,4,5,6,7,8,9,10,11,12}, {4,5,6,7,8,9,10,11,12,13}};
    int sum_tate[10] = {0}, sum_yoko[4] = {0}, sum = 0;
    int i, j;
    for(i=0; i<4; i++){
        for(j=0; j<10; j++){
            sum += aray[i][j];
            sum_tate[j] += aray[i][j];
            sum_yoko[i] += aray[i][j];
        }
    }
    printf("sum: %d\n", sum);
    printf("\n");
    for(i=0;i<4;i++){
        printf("sum_yoko[%d]: %d\n", i, sum_yoko[i]);
    }
    printf("\n");
    for(i=0;i<10;i++){
        printf("sum_tate[%d]: %d\n", i, sum_tate[i]);
    }
}