1

たとえば、1000 フレームのファイルがあります。各フレームには異なる数の行が含まれています。各行には整数の 2 つの列があります。しかし、各フレームに含まれる行数はわかりません。すべてのフレームは 1 つの空白行で区切られています。これらの値を読み取り、配列に格納したいと考えています。しかし、各フレームの行数がわからないため、配列サイズを割り当てることができません。だから、私は2つの質問があります:

  • 「do」ループを使用して、fortran90 プログラムで異なる行数を読み取るにはどうすればよいですか? 各フレームの正確な行数がわからないため、「カウント制御 do」ループを使用できません。
  • 以前にサイズを割り当てることができない場合、配列に数値を格納するにはどうすればよいですか? ファイルは次のようになります。
1   2  
2   1

3   2

2   8   
4   5  
4   17  
2   10

等々...

助言がありますか?

4

2 に答える 2

1

std::vectorFortran (IMO) の最新バージョンでさえも弱点の 1 つは、 C++ やGArrayGLib/Cのような拡張配列がないことです。はい、自分でそのようなことを書くことはできますが、ジェネリック/テンプレートがないということは、すべての型と種類に特化するか、割り当て可能なclass(*)スカラーをいじる必要があることを意味します...うーん。

しかし、私は脱線します。

私が見ることができる2つのオプションがあります。1 つ目は、ファイルに対して 2 つのパスを実行することです。最初に各スペース間の行数をカウントし、フレーム配列を割り当てます。2 つ目のパスは、実際に配列にデータを入力します。

2番目の、おそらくより「Fortran-y」な方法は、単一のフレームに期待される大きさの一時的な作業配列を持つことです。これにデータを入力し、フレームの最後に到達したら、適切なサイズの配列を割り当てて、読み取ったばかりのデータをコピーします。

残念ながら、どちらのソリューションも特に素晴らしいものではありません。

于 2013-11-01T04:25:01.287 に答える