Q&A (電気電子)

【C++】2回分の点数を3次元配列に格納するプログラム

問題の意味がよくわからなかった。

答えないからどうしようもないけど、
とりあえず与えられた点数を三次元配列に代入するだけでいいと見た。

ひとまずtensu1とtensu2という配列を準備して、適当に点数ぶち込んでそれをsanzi[2][4][3]という配列にぶち込むことにした。

頭の2に変数を置いて、これが0ならtensu1の値を、これが1ならtensu2の値を格納する、ってことで、とりあえず値の振り分け用といった感じ。動的?な感じではないわ。

プログラム

作成したプログラムは以下の通り。

#include <iostream>

void dainyu(const int a[4][3], const int b[4][3], int c[2][4][3]) {
    int i, j, k;

    for (k = 0; k < 2; k++) {
        for (i = 0; i < 4; i++) {
            for (j = 0; j < 3; j++) {
                if (k == 0) {
                    c[k][i][j] = a[i][j];
                }
                else {
                    c[k][i][j] = b[i][j];
                }
            }
        }
    }
}


void print2(const int m[4][3]) {
    int i, j;
    for (i = 0; i < 4; i++) {
        for (j = 0; j < 3; j++) {
            printf("%4d",m[i][j]);
        }
        putchar('\n');
    }
}

void print3(const int n[2][4][3],int flag) {
    int i, j;

    for (i = 0; i < 4; i++) {
        for (j = 0; j < 3; j++) {
            printf("%4d",n[flag][i][j]);
        }
        putchar('\n');
    }
}

int main()
{
    int tensu1[4][3] = { {98,97,96},{39,53,98},{31,53,95},{74,69,89} };
    int tensu2[4][3] = { {54,67,89},{89,89,100},{100,100,100},{54,34,64} };
    int sanzi[2][4][3] = { {{0}} };

    puts("一回目の点数");
    print2(tensu1);
    putchar('\n');

    puts("二回目の点数");
    print2(tensu2);
    putchar('\n');

    puts("三次元配列の練習");
    dainyu(tensu1,tensu2,sanzi);
    puts("一回目の点数");
    print3(sanzi,0);
    putchar('\n');
    
    puts("二回目の点数");
    print3(sanzi,1);
    putchar('\n');

}

実行結果は以下の通り。

一回目の点数
  98  97  96
  39  53  98
  31  53  95
  74  69  89

二回目の点数
  54  67  89
  89  89 100
 100 100 100
  54  34  64

三次元配列の練習
一回目の点数
  98  97  96
  39  53  98
  31  53  95
  74  69  89

二回目の点数
  54  67  89
  89  89 100
 100 100 100
  54  34  64

まあとりあえずできているのだろう。

まとめ

めんどくさいので3次元まで使いたくない。

-Q&A (電気電子)
-,