プログラミング初心者、学生
「2次元配列習ったけど、操作したい要素がどこか分からなくなる」
そんな方の疑問に答えます。
コードが知りたい方は目次のソースコードへ飛んでください!
本記事のテーマ
【完全初心者向け】2次元配列の扱い方を学ぶ!
2次元配列の縦横の合計!
条件
・2次元配列 int aray[4][10]を宣言
アルゴリズム
文字列を数値に変換
1. 二重ループを作成する
2. 縦横の合計を格納する変数に必要な要素を加算していく
2次元配列、縦横合計プログラム実装!
合計プログラムは、
←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]);
}
}