いつもお世話になっています。
xxx.datのようなデータファイルの行数をカウントする方法についてご存知でしたら、お教えください。
具体的に今やりたいことを書きますと、
複数のデータファイルがあって、それぞれデータセットの行数が異なります。
ひとつひとつのデータファイルを読み込んで計算して、それぞれ別のファイルにアウトプットさせる、というのをひとつのfortranプログラムで実現させたいのですが、その前にそれぞれのデータセットの行数をカウントする必要があります(計算の必要上)。
プログラムの中で行数をカウントするところまで組み込めたら便利なので、いろいろ調べてみたのですが、結局わからず、現状はひとつひとつのデータファイルを見て行数を確認して...というところです。
「fortran77でこういうことできるのかな?」というレベルの質問で、急ぐ話でもありません。よろしくお願いします。
No.2ベストアンサー
- 回答日時:
データを読みながらカウントすればよいのでは?
前回の回答( http://qanda.rakuten.ne.jp/qa4425688.html )を変更して
以下のようにすればカウントできます。
(エラー処理などは入っていませんので適宜入れてください)
dimension a(1000,4)
open(1,file="data.dat")
i = 1
100 continue
read(1,*, END=200) (a(i,j),j=1,4)
i = i + 1
goto 100
200 continue
write(6,*) "データ数 = " , i
do 300 k = 1, i
write(6, *) (a(k,j),j=1,4)
300 continue
この回答への補足
前回にひきつづきありがとうございます!
読み込むときにカウントすればよいのですね。
教えていただいた方法でうまくいきました。
これは質問の補足というより参考程度に聞きたいのですが、
上記の方法で前回の質問のような、空行を挟むデータを読み込むときには、
空行を除いた数がカウントされるようなのですが、
空行を含めた行数をカウントする場合はどのように指定すればよいのでしょうか?
No.3
- 回答日時:
空行を挟むデータを読み込むときにはフォーマット付文字列で読み込みます。
但し、古いFortranの知識ですので、もっと良い方法があるかもしれません。
character*80 c
dimension a(8,4)
open(1,file="data.dat")
i = 1
100 continue
read(1,'(A80)', END=200) c
if(len_trim(c) .gt. 0) then
read(c, *) (a(i,j),j=1,4)
end if
i = i + 1
goto 100
200 continue1234
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- その他(プログラミング・Web制作) FORTRAN77の配列(除算) 2 2023/02/01 14:34
- Excel(エクセル) Countifよりも早く重複数をカウントする方法ありますか? 18 2022/07/04 13:39
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
- IT・エンジニアリング 大規模言語モデルは今後どのように進化していくでしょうか? 1 2023/07/20 19:17
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- CGI CGIが読み書きするデータファイルのパーミッションはさくらのインターネットでは何にするべき? 1 2023/05/02 16:44
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
- UNIX・Linux サーバー間のデータコピー(データ形式とデーターフォーマットの変換あり。一定間隔で処理) 2 2023/08/22 22:15
- その他(Microsoft Office) SUMIFとCOUNTIFの違いについて 4 2022/09/29 14:13
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
C言語の課題で、1年の秒数を計...
-
変化させるセルが変化しない
-
排他的論理和 BCC(水平パリテ...
-
C言語についてです。 再帰を使...
-
VBとVBAの違い
-
傾いた四角形内の範囲の条件式
-
骨折リスク評価のFRAXについて...
-
チェックデジット計算できる関...
-
入射角反射角
-
バッチファイルでウインドウを...
-
C++言語で、レナードジョーン...
-
2進数の乗算をc言語で計算した...
-
べき乗の計算が遅い理由
-
数値計算の高速化 (cos, sin, exp)
-
Vba Cells.Findについて教えて...
-
ExcelのマクロVBA動作を軽くす...
-
VBAの再計算が反映されない件に...
-
fortran πについて
-
C言語についての質問です。 ル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
バッチファイルでウインドウを...
-
モジュラス103の計算とは何でし...
-
傾いた四角形内の範囲の条件式
-
Visual C++でdebugとreleaseで...
-
変化させるセルが変化しない
-
骨折リスク評価のFRAXについて...
-
C# 計算処理中に実行中ウィン...
-
VBAでの勤務時間計算
-
べき乗の計算が遅い理由
-
C言語についてです。 再帰を使...
-
Excel VBAにてFFT
-
数値計算の高速化 (cos, sin, exp)
-
VBとVBAの違い
-
VB6で正確なミリ秒を計測したい...
-
スレッド処理からダイアログを...
-
matlabで計算終了
おすすめ情報