• 締切済み

Fortran 出力形式

Fortranのプログラムで write(IUO,1) a(10) write(IUO,1) b(10) write(IUO,1) c(10) 1 format(1p,1f10.4) と書かれていると、ファイルIUO内に、 formatから1行でa(10),b(10),c(10)の値が連続して出力されます。 a(1) b(1) c(1) a(2) b(2) c(2) ........ ........ ........ a(10) b(10) c(10) のようにa,b,cの値を各列ごとに出力させたい時はformatをどのように書けばよいのでしょうか? 詳しい方がいらっしゃったら教えて下さい。 よろしくお願いします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

おっと, #1 だとすべてが 1行になっちゃうのかな. なら a(i), b(i), c(i) を一度に出力すればいい. フォーマットは 3F10.4 とか 3(1P,F10.4) とかかな? 最悪 / で切れば何とでもなりそう.

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

単純に do i=1, 10 write(IUO,1) a(i) write(IUO,1) b(i) write(IUO,1) c(i) 1 format(1p,1f10.4) end do じゃダメな理由がある?

関連するQ&A

  • FORTRANの出力データの左寄せができません。

    素数を一万個見つけてそれを規定のフォーマットでTXTファイル出力しなければいけないのですがRANGEの右側の列をハイフンのすぐ隣に左寄せしてファイルに出力したいのですがどうしてもよくわかりません。FやE使って試しましたがエラーが出てコンパイルできなかったです。左寄せ以外にももっと効率のいいコーディングありましたらアドバイスいただけませんか? FORMAT110の真ん中のI6なんですけどこの値が右寄せでTXTファイルに残ります。最初のI6が右寄せでハイフンはさんで二個目のI6が同じ右寄せだとみっともないのです。 110 FORMAT(I6, 1X, ('-'), 1X, I6, T17, 12(2X, I6)) S = 1  L = 12 WRITE (15,110) S, L, P(S:L) DO 60 S = S + 12,10000,12 L = L + 12 IF ( S .EQ. 9985 .AND. L .EQ. 9996) THEN A = S + 12 B = L + 4 WRITE (15,110) A, B, P(A:B) GO TO 99 ELSE WRITE (15,110) S, L, P(S:L) END IF 60 CONTINUE C END IF 99 CLOSE (15) END

  • FORTRAN(g95)の話です。

    FORTRAN(g95)の話です。 --------------------------------- program test double precision a a=1234.3456789 write(*,100) a 100 format( ) stop end --------------------------------- 以上のようなプログラムでaの値を正確に最後まで出力するにはどのような format文をかけばよいのでしょうか。E変換、F変換、G変換、D変換と試してみましたが うまく表示されません。 それと出力文字に色をつけるにはどうすればよいのでしょうか。

  • fortran77教えてください

    fortran77のプログラムについての質問です。 次のプログラムを実行するとどのような結果になるか教えてください REAL A,B,C,D,E,F A=7.0 B=5.0 CALL WASA(A,B,C,D) CALL WASA(C,D,E,F) WRITE(*,*)E,F STOP END SUBROUTINE WASA(P,Q,R,S) REALP,Q,R,S R=P+Q S=P-Q RETURN END

  • 配列のファイル出力について

    fortranでできるファイルへの配列の出力をC言語でどのようにプログラムするか教えて頂きたいと思います。 2次元配列a(i,j)の出力はfortranでは以下のようなプログラムになります。 open(10,.省略...) ファイルを指定して開く do j=1,ny                ループj   write(10,'(100f10.3)') (a(i,j),i=1,nx) ループi+書き出し enddo                  ループjの最後尾  close(10)                ファイルを閉じる 100f10.3というのは小数点3桁の実数で10カラムで表現したものが100個並ぶという意味です。これと同じことをやるC言語プログラムを教えて頂きたいのですが。私の手元にある本にはやり方が載っていません。 C言語にはfortranのような数字のカラムを指定するようなフォーマットの調整などできるのでしょうか。よろしくお願いします。

  • FortranでCSVファイルを読み込む方法

    fortranでこのcsvファイルのE列、F列の5行目から14行目まで読み込んで、それぞれの平均を求めるまでのプログラムを書かなければならなくなったのですがどのようにすればよいのでしょうか。 行、列の読み飛ばしの仕方が分からなくて困っています。 また、読み飛ばし以外の方法でもできるのであれば教えてください。 プログラム言語はfortranが初めてです。よろしくお願いします。

  • Fortranの出力の改行について

    Fortran超初心者です。 test1.csvのファイルには、x,yの変数がずっと続いています。 test2.datのファイルには、a,bの変数がずっと続いています。 この2つのファイルの変数を元に、d,eの値を求め、それをtest3.csvというファイルに出力したいのです。 test1.csvとtest2.datの計算はできていたのですが、test3.csvの出力は最後の計算結果のみしか出力されていません。 多分毎回出力はしているのですが、計算を繰り返すと上書きされ消えてしまうという仕組みになっているのだと思います。 どうやったら上書きされずに、csvファイルの次の行に次のデータを入力できますか? 以下私が考えたFortran90のプログラムです。 open (10, file='test1.csv', status='old')  do   read (10, *, iostat=ios) x, y   open (11, file='test2.dat', status='old')   do    read (11, *, iostat=jos) a, b    d = x +a    e = y + b    if (jos .lt. 0) exit   enddo   open (12, file='test3.csv', status='replace')   write (12, *) x, y, a, b, d, e   close (12)   close (11)   if (ios .lt. 0) exit  enddo close (10) 本当に始めたばかりで、いまいち意味の分かっていない部分もあるのですが、問題点を指摘してくれたら助かります。 わかりにくいので、具体的に少し書くと、 test1.csvには 1,2 9,3 6,4 とデータが続くとします。 test2.datには 80,50 10,20 90,60 とデータが続くとします。 test3.datには 1,2,80,50,81,52 1,2,10,20,11,22 1,2,90,60,91,62 9,3,80,50,89,53 9,3,10,20,19,23 9,3,90,20,99,23 6,4,80,60,86,64 6,4,10,20,16,24 6,4,90,20,96,24 と出力されるようにしたいのです。 実際のデータや変数名も違いますが、プログラムの構造は同じです。 よろしくおねがいします。

  • マクロCSV出力

    Sheet1に入力されている値をCSVファイルに出力したいと思っております。 但し、特定のセルだけを取得して、1つのファイルに出力したいと思っています。 (1)D2~G2に入力されている値を取得 (2)E4~E10までと、E4~E10の最終列までの値を取得 (3)B11の値を取得 (4)A13~A列の最終行まで、A13~A列の最終行の最終列までの値を取得 (1)、(2)、(3)、(4)の値を取得して、1つのCSVファイルに出力するプログラムを作成したいと思っております。 (1)は1行目に出力 (2)は2行目~8行目に出力 (3)は9行目に出力 (4)は10行目以降に出力 出力の形式は ”TEST”,” ”,”SMP”のようにダブルクォーテーションで値を囲って出力したいと思っています。 値が入っていないセルは” ”,としたいと思っております。 サンプルを作成して頂けないでしょうか。

  • ファイルを比較して差分のみを出力するには…?

    とつぜんですみません。緊急なので投稿しました。 VBSを使って、2つのファイル(ファイルAとファイルB)の1行目からファイルの終わりまでを比較して差分を出力するプログラムを作成したいと考えています。 ファイルの1列目は主キーとなっております。 <ファイルA> 100,A 110,B 133,D 155,R … <ファイルB> 100,A 110,B 133,F 155,P … また差分の出力は上の例でいくと、 133,D → F 155,R → P というようなかたちでファイルに出力したいです。 どなたかアドバイス頂けないでしょうか? よろしくお願いします。

  • Fortran90/95の出力方法について

    Fortran90/95の出力方法について Fortran95において,変数の値をwrite文で出力した後に改行しない方法を教えてください. 具体的には次のProgram reiを用いて質問します. program rei implicit none integer i, n read(*,*) n do i = 1, n write(*,*) i end do end このプログラムを実行させnに3を代入すると次のように表示されます. 1 2 3 しかし,私としては次のように改行せずに表示させたいのです. 1 2 3 また,諸事情により配列は使用しません. プログラムをどのように改良すればよいのでしょうか.教えてください.

  • 配列のファイルへの出力について

    fortranでできるファイルへの配列の出力をJAVAでどのようにプログラムするか教えて頂きたいと思います。 2次元配列a(i,j)の出力はfortranでは以下のようなプログラムになります。 open(10,.省略...) ファイルを指定して開く do j=1,ny                ループj   write(10,'(100f10.3)') (a(i,j),i=1,nx) ループi+書き出し enddo                  ループjの最後尾  close(10)                ファイルを閉じる 100f10.3というのは小数点3桁の実数で10カラムで表現したものが100個並ぶという意味です。これと同じことをやるJAVAプログラムを教えて頂きたいのですが。私の手元にある本にはやり方が載っていません。 JAVAにはfortranのような数字のカラムを指定するようなフォーマットの調整などできるのでしょうか。よろしくお願いします。 この質問は、C言語について以前質問したものですQNo.3590702。 JAVAだったらどうなるだろうと思ってお尋ねしています。

    • ベストアンサー
    • Java