2017-02-14 5 views
0

からデータを読み出す際に、私は、次の形式(11列および8行)のテキストファイルを有する順位ミスマッチテーブル

Name Chris Kyle Peter Luke Sally (...) 
age  xxxx xxxx xxxx xxxx xxxx 
height   xxxx xxxx xxxx xxxx 
weight   xxxx xxxx xxxx xxxx 
class   xxxx xxxx xxxx xxxx 

最初の列(クリスが)最初の行のデータを有しています。

私は、このテーブルを読むためのプログラムを構築する必要があり

、これは私がこれまで持っているものですが、私はそれが仕事を得ることができない...

program readtable 

    implicit none 
    integer :: i, j, num_col, num_row 
    double precision, dimension (2) :: a 
    character(14), dimension (1) :: variable 

    num_col = 11 
    num_row = 8 

    open(100,file='SSL.dat',status='old') 
    do j=1, num_row 

     read(100,*) variable(j), (a(i,j), i=1,num_col) 
     print*, variable(j), a(i,j) 

    end do 

    end program 

私は、コードのこの部分を実行すると、私が手ランクの不一致。

この表のデータを読んで、特定の変数にデータを割り当てることができます。例えば、私がカイルとピーターで何かしたいのであれば、私はカイルa(:、2)とピーターa(:、3)のためにそれを知っています

ここで私はgfortran Fortran 90のコード

   read(100,*) variable(j), (a(i,j),i=1,num_col)) 
             1 
Error: Rank mismatch in array reference at (1) (2/1) 
+0

正確なエラーメッセージとその原因となるコマンドを教えてください。 –

+0

テキストとしてコピーしてください。それは他の人のために検索可能でなければならない。これは、あなたが質問に直接画像を置くことができない理由です。私はそれを編集することはできませんが、画像を見えるようにします。ここにテキストを入れてください。 http://meta.stackoverflow.com/questions/303812/discourage-screenshots-of-code-and-or-errors –

+0

このバージョンは問題ありませんか? –

答えて

1

あなたはdimension(n)が配列nが次元になることを想定ように見えます。それは本当ではありません!これは、配列を1次元にし、形状を1からnまで、すなわち(1:n)とする。

あなたはあなたがしなければならない8行11列の2次元配列を宣言する場合:

double precision, dimension(8,11) :: a 

または同等

double precision :: a(8,11) 

を同様に、variableのようなものでなければなりません

character(14), dimension(8) :: variable 

これにより、プログラムが完成して機能することはありませんが、コンパイラが不平を言っている直ちの問題を修正します。あなたの質問を狭めてください。

関連する問題