
素数を一万個見つけてそれを規定のフォーマットで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
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
私は20年以上前にFORTRANを使い、その後は全く触れておりませんので今のFORTRANがどうなっているか分かりませんが、ANO1.さんは
「右寄せするためには、文字変数に変換する必要がありますが、そんな関数はありません。」
と書かれてますが、WRITE命令の出力デバイス(通常は6)を文字変数にして、数値変数→文字変数に変換できたと思います。
その文字変数を左カラムからサーチして空白を取り除けば左寄せにした数値(実は文字変数)が得られると思うのですが、今のFORTRANではそのようなことはできないのでしょうか。
CHARACTER*6 CH6
INTEGER NUM
WRITE(CH6,100)NUM
100 FORMAT(I6)
wakarananさん回答ありがとうございます。
基本的にtxtファイルに書き込みしなければならなのでUNIT NUMBERは15で設定しているのでそれを使って書き込みしなければなりません。あとこのやり方だと全部の出力値が左寄せになってしまうではないでしょうか?
自分は一万個の素数を一行12個ずつ表示させたいのでその素数の数のカウントを1から12、次は13から24という風な感じです。そのカウントのレンジの大きいほうの数字だけ左寄せにしなければなりません。レンジの小さい方の数字と12個の素数は右寄せのままでかまいません。

No.2
- 回答日時:
内部ファイルで文字列に変換して右詰で出力するだけです。
77fortranで実装されている関数かどうか忘れました。
実装されていない場合にはindex関数でスキャンすれば同じ
ことができます。
integer i,i2
character*5 ai,ai2
i=1
i2=12345
write(ai,'(i5)') i
write(ai2,'(i5)') i2
write(*,'(a5)') adjustl(ai)
write(*,'(a5)') adjustl(ai2)
end
noname#70160さん回答有難うございます。
adjustはFortran77では使えないはずです。次の90からだと思います。もしよければこのやり方を自分のフォーマット110に応用させたものを見せてもらえますか?いろいろ自分のに当てはめて試したんですけどうまくいかなかったです。
たとえば2つくらいの出力なら左側をIを使って右側をFを使うと両方の数字が真ん中に寄ります。
WRIRTE(6,600) (X(I), I = 1、5)
600 FORMAT((/ 'X(' I1 ') =', F10.5)
これはIMPLYINGDO-LOOPも使った応用です。こうするといつもは真ん中によってくれるんですけど今回はうまくいってません。
No.1
- 回答日時:
FORTRUN77についての解答ですが、
FORTRUNでは、数値変数は右寄せ、文字変数は左寄せに決まっていて、
これをFORMAT文の出力形式指定で変える事はできません。
右寄せするためには、文字変数に変換する必要がありますが、
そんな関数はありません。
従って実現するためには、数値データをいったんファイル出力し、
そのファイルの数値データ部分を文字として読み込む方法が取れ
ます。(スペースの除去も必要)
とても面倒です。
もしパソコンでやられているのなら、出力結果はCSVのテキスト
ファイルとし、別の表計算ソフト等できれいなアウトプットを作った
方がベターですが、何か事情があるのですね。
yyr446さん回答ありがとうございます。
コード見てもらったらわかると思いますがただtxtファイルを打ち込むだけでポンと出来上がるような感じを目指しています。まだためしていませんがバイナリーファイルのプログラミングもそのうちやらないといけないのでそのときはそのようなやり方やってみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイルに書き換えるように出...
-
動画ファイルのサイズ変更
-
VOB→RMについて
-
C++での検索と出力について
-
UNIX & Linux の標準出力で得た...
-
eclipseで作成したプログラムの...
-
半年以上前のファイルの時刻表示
-
CSVファイルを任意の場所に出力...
-
VB6でなにか出題を・・・・
-
ワークステーション上の画面の...
-
C言語にてテキストファイル内の...
-
入力した値をファイルに出力す...
-
fortranのtxtファイル出力書式...
-
VBでFORTRANの制御ができない
-
MS-Word で作成した表をLatexに...
-
raw形式からbmp形式への書き込...
-
C言語でファイルからの文字列抽...
-
パイプラインとリダイレクトの違い
-
JISコードでファイル出力したい。
-
Turbo Delphi での、unicode 出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンド(例えばls)の出力結果...
-
【ExcelVBA】UTF-8(BOM無)でC...
-
ファイル出力の場所を指定
-
VC++でUTF-8のファイルを出力し...
-
ファイルの文字コードをUTF-8に...
-
シェルコマンドの 2>&1 とはど...
-
Acccess レポートをグループ別...
-
BitBltについて。
-
Wordマクロで指定したフォルダ...
-
ファイル形式またはファイル拡...
-
CSV形式に変換
-
テキストファイルに改行コード...
-
C++ fprintf_sの使い方がわからん
-
外国語とCSVについて
-
1行ずつではなくまとめてファイ...
-
pcap形式データをテキストへ抽出
-
重複チェックプログラム
-
AviUtlでAVI出力が途中までしか...
-
CBool関数について VB6とVB.net...
-
標準出力とファイルに効率的に...
おすすめ情報