プロが教えるわが家の防犯対策術!

プログラミング全くの初心者なのですが、
100x100x100の整数で表されたファイルを読み込む場合、
#include<iostream>
#include<fstream>
using namespace std;

int main(){
ifstream fin;
fin.open("100x100x100.txt");

int matrix[100][100][100];
const int SIZE=100;

for(int i=0; i<SIZE; i++){
for(int j=0; j<SIZE; j++){
for(int k=0; k<SIZE; k++){
fin>> matrix[i+1][j+1][k+1];
}
}
}
fin.close();
return 0;
}
としてファイルを読み込んでいるのですが、他に良い方法はないでしょうか?最終的には、読み込んだファイルの各列ごとの平均値をとりたいと思っています。
誰かご教授お願いします。

A 回答 (3件)

・参考までに3重ループを単純ループにしてみます。


int matrix[SLICE*SIZE*SIZE];
   :(略)
for (unsigned long i = 0; i < SLICE*SIZE*SIZE; i++) {
  fin>> matrix[i];
}
matrix[i][j][k]へのアクセス方法はmatrix[i*SIZE*SIZE+j*SIZE+k]となります。

・平均の格納イメージがわかりません。また平均の計算方法もいくつかあります。単純に列合計÷列要素数であれば読み込みのループ中に列合計を行うことぐらいは出来そうですが,コードが読みにくくなるかもしれません。
    • good
    • 0

「列」というのがどの添え字に対応するのか分からないので何とも言いにくいんですけど....


#1 の指摘とあともう 1点,
int matrix[100][100][100];
const int SIZE=100;

const int SIZE=100;
int matrix[SIZE][SIZE][SIZE];
の方が普通でしょう. 上の書き方をする意味が分からん. 意地になるなら for の条件も sizeof をつかってがりがり書くかもしれんが.
    • good
    • 0

効率の問題はあるでしょうが別に何でもいいのでは。



ただし、次はエラーですね。配列の要素番号は0~99でしょ?

fin>> matrix[i+1][j+1][k+1];
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!