• 締切済み

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変換と試してみましたが うまく表示されません。 それと出力文字に色をつけるにはどうすればよいのでしょうか。

みんなの回答

  • noyuo
  • ベストアンサー率39% (33/84)
回答No.1

1)E変換、F変換、G変換、D変換でどのように指定しましたか? 参考: http://wwwst.sc.musashi-tech.ac.jp/~bulletin/fort77.htm 2)色表示には、通常エスケープシーケンスを使用。 ただし、表示デバイスの種類によりコードが違います。 端末が、VT100 ANSI準拠なら、以下を参考にしてください。 (エスケープシーケンス と 端末の種類で検索してみては?) http://hp.vector.co.jp/authors/VA016670/escape_code.html

関連するQ&A

  • 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をどのように書けばよいのでしょうか? 詳しい方がいらっしゃったら教えて下さい。 よろしくお願いします。

  • fortranのプログラムで困っています。

    implicit real*8(a-h,o-z) dimension h(10,300) h(1,g)=1.0d0 h(2,g)=g*2.0d0 open(6, file='testes-ex.f', status='replace') do 12 n=1,2 do 11 i=1,2 g=2.0d0*i 11 write(6,*) h(n,g) 12 write(6,*) stop end として出力させると値がすべて0になってしまいます。 私としては1.0 2.0  1.0 4.0 と出力させたいのですが、 どこに問題があるのでしょうか? 当方fortran初心者ですのですごく馬鹿げた質問をしているかも しれませんが…気付くことがあればご指摘よろしくお願いします。

  • Fortran において変数の定義

    現在Fortranを使いプログラムをしていますが、円の面積を計算するため変数を定義しているところでおかしな問題が出てきました。円周率を定義するところで自分でつけた変数名 PAI の値が入力データと違うことに気づきました。以下のように簡単なプログラムを作って試したのですが結果は同じくおかしな値が出てきました。 IMPLICIT REAL*8(A-Z) PAI=3.14159265 WRITE(*,1)PAI 1 FORMAT(E30.22) PAUSE END 結果は 0.3141592741012573000000E+01 とディスプレイに表示され、このあとにPAIを使った計算があるならこの値で計算されます。私としては、PAI=3.14159265と出力し、計算もしたいのですが... これは FORTRAN 自体の特有の性質なのでしょうか、それともソフト、ハード的な問題なのでしょうか? 尚、変数 PAI をファイルから読み込んだり、PAI=4.0*ATAN(1.0) (PAI=3.1415926535897930 となりますが)、PAI=3.14159265D+00などにすると正確に表示、計算出来ます。

  • 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

    FORTRANについて聞かせてください。 WRITE(*,*) 'A= READ( *,*) A Aの値を0~0.15の範囲で0.01刻みで増やしていって実行したいのですが,どのようにプログラムを作成すればいいですか?? DOループだと思うのですが,あってますか? 分かる方いらっしゃったらお願いします。 FORTRANについてお勧めの初心者用ホームページがあればおしえてくださると助かります。

  • fortran77でのif文

    FORTRAN77の問題の質問です。 授業でこんな問題が出て困ってます。 あるクラスにN人います。 そのクラスの平均身長がXです。 そのN人の中で、X以上の身長の人数Aを印刷するプログラムを作れと言う問題です。 ここで、IF~THENを使いなさい。 分かる人がいたら教えてください。 PROGRAM TEST7 WRITE(*,*)\'x人分の身長データを入力 READ(5,*)x WRITE(*,*)\'身長のボーダーラインを入力\' READ(5,*)G A=A-G B=B-G C=C-G D=D-G E=E-G F=F-G IF(A.GT.0) THEN STOP END 途中までは、こんな感じかと思ったのですが、行き詰ってしまいました。

  • fortran g95を使ってBMPを処理したい

    以前XP環境でVisual Fortran(VF)を使ってBMPファイルを読み込むプログラム使っていました. PCがWin7になった為,FreeのFortran g95を使用して同様の処理を行いたいのですが,上手くできません.例えば”test.bmp”と言う8bitのファイルを読み込みたいとしたとき, VFでは character*1078 temp integer*1 data open(10,file='test.bmp',form='binary') read(10)temp read(10)data このときwrite(*,*)dataは133とします. g95では"binary"が使用できず, character*1078 temp chracter*1 data open(10,file='test.bmp',form='formatted') read(10,*)temp read(10,*)data data2=ichar(data) write(*,*)data2は32となってしまいます. 画像の輝度は133で,VFで読み込んだ値となります. 上のプログラムで何を直せば g95でも正しい輝度情報を読めるのでしょうか? どうぞ宜しくお願いします.

  • fortranでx=1としても0.9..が入る

    fortranで以下のようなプログラムにてxに1.0^-6を代入し、 その中身を表示しました。 --------------------------------- program test real(8) :: x = 1.0d-6 write(*,*) x write(*,*) x * 1.0d6 write(*,*) int(x * 1.0d6) end program test --------------------------------- しかし、結果は以下のようになり、 0.999999999999999955^-6となってしまいます。 さらに、やっかいなことに10^6倍して 整数型に変換しても0と認識されてしまうのです。 ---------------------------------- $ ./a.exe 9.99999999999999955E-007 1.00000000000000000 0 ---------------------------------- 変数の型も倍精度で宣言し、定数も倍精度(d付き)で 代入しているはずなのですが、なぜこのような現象が 起きるのでしょうか。 ご存知の方いましたら教えて頂けると助かります。 なお、コンパイルはgfortranで行っています。

  • FORTRAN77(g77)で(D)CBRTがエラーになってしまいます

    FORTRAN77(g77)をVine Linux 4.2で使用しています。 立方根の計算をしたいのですが、コンパイル時に"(D)CBRT"がエラーになってしまいます。 原因・代替策など御助言いただければ幸いです。 なお、(D)SQRTは問題なくコンパイル・実行できました。 以下、テスト用ソースとそのコンパイル時のエラーメッセージです。 [ソース] program a implicit none real*8 n write(*,*)"n= ?" read(*,*)n write(*,*)DCBRT(n) stop end [エラーメッセージ] a.f: In program `a': a.f:6: write(*,*)DCBRT(n) ^ Invalid declaration of or reference to symbol `dcbrt' at (^) [initially seen at (^)] ※こちらの画面ではスペースがうまく入りませんので悪しからず。

  • fortran 初心者です。

    fortranでフィボナッチ数列 A0 = 0 , A1 = 1 , Ai+1 = Ai + Ai-1 (i =2,3...) を計算するプログラムを作っています。 得られた値が奇数の時には、数値の右横に*をつけ、奇数かつ3の倍数なら**をつけます。 が、以下のようにプログラムしましたが、*印がつきません。どこが、間違っているのか、アドバイスよろしくお願いします。 C Question A0 = 0.0 A1 = 1.0 A2 = 1.0 WRITE(6,*)'A0 = 0.0' WRITE(6,*)'A1 = 1.0' DO 10 I = 2,10,1 A2 = A1 + A0 N = A2-(A2/2)*2 M = A2-(A2/3)*3 IF ( M .NE. 0 .AND. N .NE.0) THEN WRITE(6,*)'A',I,'=' ,A2,'*' ELSE IF ( M .NE. 0.AND. N .EQ.0)THEN WRITE(6,*)'A',I,'=' ,A2,'**' ELSE WRITE(6,*) 'A',I,'=' ,A2 END IF A0 = A1 A1 = A2 10 CONTINUE STOP END

専門家に質問してみよう