新しく質問する

100x100x100のファイルの読み込み方

役に立った:4件
  • 質問者:momoharata
  • 投稿日時:2009/09/01 00:56
  • 困り度:すぐに回答が欲しいです
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

プログラミング全くの初心者なのですが、
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;
}
としてファイルを読み込んでいるのですが、他に良い方法はないでしょうか?最終的には、読み込んだファイルの各列ごとの平均値をとりたいと思っています。
誰かご教授お願いします。

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:4件)

回答(3件)

  • 参考になった:1件
  • 回答者:goosyu
  • 回答日時:2009/09/01 13:35

・参考までに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]となります。

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

通報する

  • 参考になった:0件
  • 回答者:Tacosan
  • 回答日時:2009/09/01 11:19

「列」というのがどの添え字に対応するのか分からないので何とも言いにくいんですけど....
#1 の指摘とあともう 1点,
int matrix[100][100][100];
const int SIZE=100;

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

通報する

  • 参考になった:0件
  • 回答者:Tasuke22
  • 回答日時:2009/09/01 01:06

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

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

fin>> matrix[i+1][j+1][k+1];

通報する

  
このQ&Aは役に立ちましたか?(役に立った:4件)

このページのトップへ

Facebook公式ページ

公式Twitter