質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

3回答

2856閲覧

fortran 配列の読み込み

MYJ

総合スコア6

FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/09/03 05:31

質問

行数をカウントしたのち、以下のデータを読み込みたいのですがうまくいきません。なぜか最後の行だけ読み込まれます。
データをちゃんと読み込むにはどうしたらいいですか?
###読み込みたいデータ
1, 3.88000000e-003, -9.50325916e-019, 3.00000000e-002
2, 3.88000000e-003, -9.50325916e-019, 0.00000000e+000
3, -3.88000000e-003, 4.75162958e-019, 0.00000000e+000
4, -3.88000000e-003, 2.49220638e-016, 3.00000000e-002
5, 3.22000000e-003, -7.88672539e-019, 3.00000000e-002
6, 3.22000000e-003, -7.88672539e-019, 0.00000000e+000

ソースコード

fortran

1program p4 2 implicit none 3 integer :: i, n 4 real x, y, z, w 5 6 open (17, file='p5.txt', status='old') 7 n = 0 8 read(17,'()') 9 do 10 read (17, *, end=100) 11 n = n + 1 12 end do 13100 continue 14 rewind (17) 15 read(17,'()') 16 17 print *, 'NumRec =', n 18 19 do i = 1, n 20 read (17, *) x, y, z, w 21 end do 22 close (17) 23 24open(20,file='p4.csv',status='replace') 25 26 do i = 1, n 27 write (20,*) x,",", y,",", z,",", w 28 end do 29 30close(20) 31end program p4

結果

6 3.22E-03 -7.89E-19 0 6 3.22E-03 -7.89E-19 0 6 3.22E-03 -7.89E-19 0 6 3.22E-03 -7.89E-19 0 6 3.22E-03 -7.89E-19 0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

program p3
implicit none
integer n, i
real,dimension(70000,4) :: a !十分に大きい行数を設定しました.

open (17, file='p3.txt', status='old')
n = 0

do
read (17, *, end=100)
n = n + 1
end do

100 continue
rewind (17)

print *, 'NumRec =', n
do i = 1, n
read (17, *) a(i,1), a(i,2), a(i,3), a(i,4)
end do
close (17)

open(20,file='p3.csv',status='replace')

do i = 1, n
write (20,*) a(i,1),',', a(i,2),',', a(i,3),',', a(i,4)
end do

close(20)
end program p3

と組んだところ読み込めましたが,
行の最初に空白があるとうまく読み込めません...

投稿2020/09/08 05:47

MYJ

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.H.

2020/09/08 08:59

ここは質問に対する回答を書くところです。 別途新しい質問としましょう。
guest

0

ベストアンサー

読み込まれてますが、毎回、前回読んだものを上書きしていますので、最後に読んだ物だけが残っています。

「配列」というものを聞いたことは無いでしょうか?全部保存するにはそれを使います。

投稿2020/09/03 05:53

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MYJ

2020/09/08 05:41

アドバイスありがとうございます。配列を意識して組んだところうまく読み込めました. 行の最初に空白があるデータを読み込む場合にエラーが出てしまうのですが,対策方法などありますか?
otn

2020/09/08 11:26

書式 * であればエラーにならないと思いますが、 ・どんなプログラムで ・どんなデータを読んだら ・どんなエラーになったのか を書いてください。
guest

0

x,y,z,wは配列ではなく単なる変数で、読み込みループで毎回上書きされます。
(読み込みループ終了時点ではx,y,z,wには最後に読み込んだ行の値が格納されています。)

p4.csvに書き出しているのはx,y,z,w(最後に読み込んだ行の値が格納)を読み込んだ行数分となります。

配列の読み込み

とタイトルにありますが、配列に読み込んでないです。
配列に読み込んで、書き出し時に配列の内容を書き出しましょう。

投稿2020/09/03 05:52

編集2020/09/03 05:53
Y.H.

総合スコア7918

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MYJ

2020/09/08 05:42

アドバイスありがとうございます。配列を意識して組んだところうまく読み込めました. 行の最初に空白があるデータを読み込む場合にエラーが出てしまうのですが,対策方法などありますか?
Y.H.

2020/09/08 08:58

それは、この質問 > 行数をカウントしたのち、以下のデータを読み込みたいのですがうまくいきません。なぜか最後の行だけ読み込まれます。 とは別の問題になるので別の質問とした方が良いでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問