アプリ版:「スタンプのみでお礼する」機能のリリースについて

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
また,諸事情により配列は使用しません.
プログラムをどのように改良すればよいのでしょうか.教えてください.

A 回答 (3件)

先程のURLに「18.3 数値と文字の変換を行う方法」という章がありますが。


数値を文字列に変換しても出力されませんでしょうか?
    • good
    • 0
この回答へのお礼

YUI_AIさんの御指摘の通り,数値を文字列に変換することで出力することができました.
どうもありがとうございました.

お礼日時:2010/10/06 08:15

こんにちは。



既に解決されているかもしれませんが、数値のまま1行出力する例
を掲載させて頂きます。

以下の2パターンの方法により、1行出力を行うサンプルです。
1)WRITE文の出力リストで、「DO型出力リスト」を使用する。
2)WRITE文の書式指定で、「改行抑止($)」を指定する。
※当方では、Cygwinのg95で検証してみました。

■サンプルソース
注)インデント等のため全角スペースを入れています。
  ・ご使用の際は、タブor半角スペースに置換して下さい。
=========================
!== WRITE文での1行出力テスト ==
PROGRAM testw2

  IMPLICIT none
  INTEGER i, n
  CHARACTER sfmt*20

  !== 個数の入力 ==
  WRITE(*,fmt='(A)',advance='no') 'Number(1-99)='
  READ(*,*) n
  IF (n<1 .OR. n>99) THEN
    PRINT *,'** Numerical range is over. **'
    STOP
  ENDIF

  !== Test-1: DO型リストで出力(書式はデフォルト) ==
  PRINT *,'== Test-1 =='
  WRITE(*,*) ( i, i=1,n )

  !== Test-2: DO型リストで出力(書式指定:n個×4桁) ==
  PRINT *,'== Test-2 =='
  WRITE(sfmt,'("(",I2,"I",I2,")")') n,4
  WRITE(*,sfmt) ( i, i=1,n )

  !== Test-3: 改行抑止($)で出力 ==
  PRINT *,'== Test-3 =='
  DO i = 1, n
    WRITE(*,'(I4,$)') i
  END DO
  PRINT *

END PROGRAM testw2
=========================

<サンプルの実行結果>
Number(1-99)=10
== Test-1 ==
1 2 3 4 5 6 7 8 9 10
== Test-2 ==
  1  2  3  4  5  6  7  8  9 10
== Test-3 ==
  1  2  3  4  5  6  7  8  9 10

■参考サイト
配列要素を一行に出力する
http://rakasaka.fc2web.com/fortran/fortran.html# …
↑これは上記サンプルのように配列でなくても利用できます。
WRITE文の改行を抑制する
http://rakasaka.fc2web.com/fortran/fortran.html# …

以上です。
    • good
    • 0

write で advance='no' と指定すれば良いみたいですよ



参考URL
http://www.nag-j.co.jp/fortran/FI_18.html
http://www.nag-j.co.jp/fortran/code/advance.f90

この回答への補足

YUI_AIさん早速解答していただきありがとうございます。
私の説明不足だったのですが,実は質問をする前にwrite文でadvance='no'とする方法を試しました.しかし,write文でadvance='no'とする方法では文章を表示させることはできても変数を表示させることができませんでした.そこで,変数により数値を表示させつつ改行もしない方法が知りたいのです.

補足日時:2010/10/06 07:19
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!