[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 12:09 / Filesize : 350 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれFORTRAN(超初心者用)その2



1 名前:デフォルトの名無しさん [2006/11/22(水) 00:00:36 ]
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
FORTRAN使いが優しくコメントを返しますが、
お礼はFORTRANの布教と初心者の救済と次期Fortran2008規格でのCOMEFROM文採用をお願いします。

●注意事項
・質問する前にGoogle等の検索サイトで検索しましょう。
・回答者にわかりやすい様に、質問内容はできる限り詳しく書きましょう。
・エラーの場合は起きた状況、環境(OS・コンパイラ)、エラーメッセージも詳しく書きましょう。


●前スレ
くだすれFORTRAN(超初心者用)
pc8.2ch.net/test/read.cgi/tech/1138063703/

●関連スレ
FORTRAN W
pc8.2ch.net/test/read.cgi/tech/1163319215/


708 名前:701 mailto:sage [2007/07/07(土) 12:56:23 ]
できましたー!
一番の原因は>>706さんが言ってることでした
答えてくれた方々、本当にありがとうございました

709 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 13:45:18 ]
今度質問することがあったら、最初からエラーメッセージをコピペしような。

710 名前:デフォルトの名無しさん [2007/07/08(日) 13:09:06 ]
粘IN/1-T
の式をTを0から3まで0.5刻みでとって
さらにN=1、2、3、4、5について別々に求めたいのですが、わかりませんどなたかよろしくお願いします

711 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 13:16:07 ]
すいません↑の式は
粘IN30/1-T-n
狽ヘn=1からNまでです

712 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:33:21 ]
DO 10 T=0,3,0.5
S=0
WRITE(*,100) T
DO 10 N=1,5
S=S+SIN(30*3.14159/180)/1-T-N
10 WRITE(*,101) N, S
STOP
100 FORMAT(1H , 'T=', F6.2)
101 FORMAT(1H ,'N=',I2,F12.3)
END

713 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 01:34:10 ]
神です!ありがとう

714 名前:デフォルトの名無しさん [2007/07/09(月) 08:16:24 ]
まー>>711の式が悪いので、本当に計算したいモノと違うだろうな
と思うが、ある程度書いて貰ってるから後は自分で変えろ。

おれは712では、ないけど。>>711を指摘しようと思ったけどヤメタ

715 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 01:30:43 ]
何時も気になるんだけど、このスレの住人はFORTRAN77とかFORTRAN95とか
明示せずに質問したり、解答したりしてるけど問題に成らないのか?

716 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 02:28:56 ]
回答する分には答えやすい方(主にF95)に勝手に脳内補完するから無問題。
問題になるなら>>1をよく読んでから質問しろと言いたい。



717 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 11:49:19 ]
>>715
宿題はを聞く奴は違いが分からないw 結局は77になるようだが。

そうでない場合は90で答えて大丈夫だろう。さすがに90処理系はたいがいどこにでもある。

718 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 11:52:16 ]
77で答えておけばそれより上位でもだいたい問題ない。

719 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 23:08:26 ]
>>694
すごく・・・買vロジェクトです。

720 名前:デフォルトの名無しさん [2007/07/12(木) 01:20:37 ]
GNUのfortranって何であんなに遅いの?

721 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 09:40:57 ]
>>720
素人が作ってるからでないの?

GNU-Cだって倒産した商用コンパイラを引き継ぐまではf2c+gccで、小さなサンプル以外は
まともに走ったことが無かったような記憶が。

722 名前:デフォルトの名無しさん [2007/07/13(金) 18:39:06 ]
↓この問題が全くわかりません。
教えてください。
よろしくお願いします。   

   ......
call rndm0 ( )
......
a = rndm ( )
......
b = rndm ( )

このルーチンを使って、乱数を 100 回発生させて それをファイルに書き込む
プログラムを作成せよ。それを実行し、ファイルに正しく書き込まれたことを
確認せよ。なお、メインプログラムと独立したファイルにサブプログラムが
書かれている場合は、メインプログラムを違う名前のファイルで作成した後に、
コンパイルすればよい。


723 名前:デフォルトの名無しさん [2007/07/14(土) 10:48:45 ]
自分で調べるのを前提に書く

サブルーチンを使ったプログラム書けってことじゃ?

PROGRAM HOGE
 ファイルを開く(OPEN文)
ループスタート 100回
  CALL RNDM()
  Aを書く
 エンドループ
 ファイルを閉じる(CLOSE文)
 STOP
END

 SUBROUTINE RNDM
乱数発生するぞするぞ!
RETURN
 END

「メインプログラムと独立したファイルにサブプログラムが書かれている場合」
てのは、ライブラリが有るって事

調べて分からない場合は又書き名。調べた痕跡が分かれば俺は答える。

724 名前:722 [2007/07/14(土) 14:32:45 ]
>>723
ありがとうございます。
調べてみます!


725 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 03:39:15 ]
ボコボコにしてやんお 
.∧_∧ 
(  ^ω^)=つ≡つ 
(っ  ≡つ=つ 
/   ) ババババ 
( ノ ̄∪ 


726 名前:デフォルトの名無しさん [2007/07/19(木) 11:52:59 ]
たとえば、
WRITE(*,'(E10.4)') 0.0001234
とすると、出力結果は0.1234E-03となります。
この出力結果を、1.234E-04とするにはどうしたらいいのでしょうか?




727 名前:デフォルトの名無しさん [2007/07/19(木) 14:40:44 ]
そうするメリットは何?

文字として扱うかですね。

728 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 17:24:04 ]
E形編集を使ったこと無いから、気付かなかったけど
E形編集ってメイドコスプレしたオッサン並に気持ち悪い。

729 名前:デフォルトの名無しさん [2007/07/20(金) 00:09:39 ]
>>727
おい! クソ豚! わかりもしないことに口出しするな!
しょんべん飲んで、とっとと死にやがれ!

>>726
その要望は多くの人が持っていたので、Fortran90で対応がなされた。
ただしFORTRAN77でも出来ることは出来る。

Fortran90なら、ESフォーマットを使えばよい。SはScientificのSだ。
工学と科学では表記の伝統が違うようだ。詳しくはマニュアル嫁。

Fortran77の場合は、1P, E10.4, 0P を使えばよい。Pフォーマットは思わぬ副作用があるので、
使用後はすぐに 0P で元に戻しておいたほうが間違いが無い。
詳しくはマニュアル嫁。


730 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 01:19:02 ]
>>727
そりゃ少ない文字数で多くの桁を表現できるからだろ。

731 名前:デフォルトの名無しさん [2007/07/20(金) 14:49:51 ]
>>729

0.123......
1.234......
と小数点以下を同じ桁数でして、桁数も大きくすると
仮数分の限界を越すと思うが

732 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 16:49:58 ]
何が言いたいのか分からない

733 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 21:14:08 ]
無視でおk

734 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 23:45:57 ]
>>731
WRITE(*,'(E10.4)') 0.0001234
      〜〜〜

ちゃんと>>726を読んだらどうだ?
2chなんか見てないで、精神病院でも逝って来い!




735 名前:デフォルトの名無しさん [2007/07/22(日) 03:13:48 ]
r(i)をreal(8)の配列として、
sin(r(i))の値を求めたいのですが、出力が0になります。
どなたかどうすればちゃんとした値が帰ってくるのか教えてください。

736 名前:デフォルトの名無しさん [2007/07/22(日) 03:55:29 ]
r(i) がゼロなんじゃね?



737 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 03:57:02 ]
整数に代入した後に出力してるとか。

738 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 13:18:36 ]
>>735
ソース見せろ


739 名前:デフォルトの名無しさん [2007/07/25(水) 20:50:00 ]
配列の宣言で、REAL A(10,5)とすべところをA(5,10)と間違って宣言したままコンパイルし、
しかもboundのチェックしないオプションでコンパイルしてエラー等は起きずに動いた場合、
たとえば、A(7,7)にアクセスした結果は、
どちらの宣言でも同じなのでしょうか?
C言語の場合は同じというような話をきいたことがあるのですが、FORTRANの場合
いかがでしょうか?
処理系に依存して結果が不定なのでしょうか?


740 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 20:52:54 ]
同じなわけがない。C でも。

741 名前:デフォルトの名無しさん [2007/07/25(水) 21:53:51 ]
C言語なら5×10=50のエリアに連続的に並んでいるだけだから、
A(7,7)は49番目というつもりなら境界を越えない限りは
アプリの実行結果は同じになるんじゃないか。

742 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 21:55:50 ]
A(10,5) で A(7,7) はおもっくそ境界越えとるがな。

743 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 00:22:18 ]
>>742
従来のFORTRANでは、境界はあまり気にしなくていい。
というか、サブルーチンに渡したりするときは次元すら気にしない。
どうせ先頭番地しか渡してないので。自己責任でGo!

>>740 >>741が正しい。
どうせメモリー上では1次元に展開されているので、どう展開されるか分かっていれば
本来不正な添え字でも、目的の配列要素をアクセスすることが可能。

ただ、FORTRANとCでは、1次元に展開される時の列と行の順序が逆になっている。
FORTRANは縦書き。A(1,1),A(2,1),A(3, 1),.....,A(1,2), A(2,2), A(3, 2),.....という風にメモリー上に
並んでいる。
.






744 名前:デフォルトの名無しさん [2007/07/26(木) 07:24:32 ]
FORTRANの他に数値解析に向いてる言語って何がありますかね?

745 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 08:43:53 ]
>>743
いや、配列のために確保されているメモリ領域を越えちゃってるという意味で・・・

746 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 10:30:25 ]
>>745
今回に限って言えば、50>7*7=49でぎりぎりセーフでね?




747 名前:デフォルトの名無しさん [2007/07/26(木) 12:17:43 ]
>>746
Cは0から始まるから A(7,7) は (7+1)*(7+1)=64番目なのよ。
まあ、>>739のは Cの場合はA(6,6)と読み替えてやるのがよろし。

748 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 12:23:45 ]
>>746
A(10,5) で A(7,7) にアクセスするってのは、
10 * (7 - 1) + 7 = 66 番目のメモリ領域にアクセスするってことで、
50 要素しかない A(10,5) のメモリ領域は余裕で越える。

749 名前:747 mailto:sage [2007/07/26(木) 12:32:02 ]
>>748
確かにそうだ。何で1行7要素だと思ったのか。
馬鹿だった。

750 名前:デフォルトの名無しさん [2007/07/26(木) 14:56:16 ]
じゃA(5,10)なら良いのか?
violationになりそうだけど

751 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 19:32:06 ]
5 * (7 - 1) + 7 = 37 だから、
確保したメモリ領域を越えないという点に関してのみは問題は無い。

752 名前:739 [2007/07/26(木) 19:38:10 ]
>740-751
皆さんありがとうございました。
考え方がよくわかりました。
変な質問になってしまい申し訳有りません。
A(7,7)は例が悪かったと反省しています。


753 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 19:58:59 ]
>>744
お金があったらMATLAB
貧乏人ならOctave

754 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 23:33:09 ]
>>748
んだ。おまいが正しい。わしが間違ってた。すまんこw


755 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:32:54 ]
>>743
>どうせメモリー上では1次元に展開されているので、
そうなんすか・・・知らんかった
つまり、A(7,7)は単に先頭から7*7=49番目を見るってことですか?

>ただ、FORTRANとCでは、1次元に展開される時の列と行の順序が逆になっている。
つまりFORTRANは左から、Cは右から1,2,3,・・・と展開していくってことですか

756 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 12:37:39 ]
>>755
ちょっと前のレスくらい読めよ・・・



757 名前:755 mailto:sage [2007/07/27(金) 12:39:52 ]
>>756
すいません新着し忘れてましたすいません

758 名前:747 mailto:sage [2007/07/27(金) 12:51:34 ]
まだ混乱しているようだから、整理すると

SUBROUTINE A(X)
INTEGER X(10,5)
WRITE(*,*) X(7,3)
END SUBROUTINE
PROGRAM
INTEGER Y(5,10)
Y(2,6)=10
CALL A(Y)
  STOP
END

とかやると
ちゃんと 10って表示されるってことでしょ。
Y(2,6) は前から27番目。 X(7,3)も27番目だから。

メインルーチンの中で Y(7,7) とかやるとコンパイル時にエラーが出ると思う、さすがに

FORTRAN77の頃は結構利用されていたような気がする。
普通は1次元配列で作って2次元で受け取るとかその逆だと思うけど。

759 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 13:42:25 ]
すいません.Fortran90で複数行をまとめてコメントアウトすることはできないのでしょうか?

760 名前:755 mailto:sage [2007/07/27(金) 13:55:30 ]
>>758
ありがとうございます。もんすごい良く分かりました。

Y(7,7)でやってみたところ、g77だとやはり out of defined rangeとなりましたが、
ifort9ではコンパイルでき結果も一致しました。

SUBROUTINE A(X)
INTEGER X(10,5)
WRITE(*,*) X(7,4)
END SUBROUTINE
PROGRAM
INTEGER Y(5,10)
Y(7,7)=10
CALL A(Y)
  STOP
END

ifortって緩いんですかね?

761 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 14:18:10 ]
>>760
配列の範囲チェックに限らず、ifortは微妙にいろいろ緩いよ。少なくともg77よりは。
オプションで変わるのかも知れないが、デフォではそう。
最初のうちはg77で練習した方がいいかもね。

762 名前:デフォルトの名無しさん [2007/07/27(金) 17:14:05 ]
Fortran77で、Do文を利用して配列に値(1or0)を代入して
ファイルにはいたら途中から?????とか巨大な数が
でてしまうのですが、
何か初期化などが必要なのでしょうか?
Do文の前にx(i,j,k)=0とか入れてるのですが、
これでは駄目なのでしょうか?

763 名前:デフォルトの名無しさん [2007/07/27(金) 17:51:26 ]
>>762
1か0を代入した配列要素を参照すれば1か0を返すと思います。
予期せぬ値を吐いているのは、配列が宣言されてから、
その要素に一度も値が代入されていないからだと思います。

予期せぬ値が配列のどの要素にあたるのか考えてみれば
大抵あっさり解決すると思いますよ。

764 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 20:02:58 ]
Intel fortranだと初期化してない変数は自動で0になるんよね

765 名前:762 mailto:sage [2007/07/27(金) 20:22:52 ]
>>763,764
ありがとうございます。
使用しているのはSalfordのftn77peです。
配列要素は代入したものを参照しているはずなのですが。。。
以下の内容ですが間違いありますか?
integer h
parameter(ilimit=10)
parameter(jlimit=20)
parameter(klimit=2)
real Conc(ilimit+1,jlimit+1,klimit+1)
open(10,file='tests1.csv')
i=0
j=0
k=0
h=5
Do 300, i=0,ilimit
Do 200, j=0,jlimit
if(j.lt.h) then
Conc(i,j,k)=0.0
else
Conc(i,j,k)=1.0
endif
write(*,*)i,j,k,Conc(i,j,k)
write(10,*)i,j,k,Conc(i,j,0)
200 Continue
300 Continue
c
close(10)
stop
end


766 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 22:09:46 ]
>>765
FORTRANの配列は特に指定しない場合は 1から。

>使用しているのはSalfordのftn77peです。
>>765のプログラムを/CHECK オプションを付けてコンパイルすると実行時エラーが出る。
/FULLCHECK オプションを付けるとコンパイル時にエラーになる。

配列を0から始めたいのなら以下のようにする。
real Conc(0:ilimit,0:jlimit,0:klimit)



767 名前:762 [2007/07/28(土) 13:05:47 ]
>>766
アドバイスありがとうございます。
教えていただいたオプションつけると
実行時エラーが確かにでますね・・・
どこに間違いがあるのでしょう?

768 名前:762 mailto:sage [2007/07/28(土) 13:09:51 ]
>>766
初期化したら大丈夫でした。
何から何までありがとうございました。

769 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 17:13:16 ]
gfortran, ifort で NaN を検出したいのですが、
どうすればよいでしょうか。

program test
real(8) :: x,y
x=1.
y=0.
write(*,*) x/y,isnan(x/y)
end

$ gfortran test.f90
/tmp/ccABo1qT.o: In function `MAIN__':
test.f90:(.text+0xa3): undefined reference to `isnan_'
collect2: ld はステータス 1 で終了しました

$ i$ ifort test.f90
$ ./a.out
Infinity F

鳥は
Linux 2.6.20-gentoo-r8 SMP x86_64 Intel(R) Xeon(TM) CPU 3.80GHz GenuineIntel GNU/Linux
$ gfortran --version
GNU Fortran 95 (GCC) 4.1.2 (Gentoo 4.1.2)
$ ifort --version
ifort (IFORT) 9.1 20070215
です。


770 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 20:48:12 ]
>>769
Intel Fortran, g95 なら

program test
real(8) :: x,y
x=0.
y=0.
write(*,*) x/y,isnan(x/y)
end

gfortranの場合は知らん。

771 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 21:18:08 ]
>>770 thanks. infinity は NaN ではなかった。小手先の工夫で
program test
real(8) :: x,y
x=0.
y=0.
x=x/y
if(x-x.ne.0.) then
write(*,*) x
else
write(*,*) x-x
endif
end
を考えたのですが gfortran は NaN を返し、ifort は
0.000000000000000E+000
を, ifort -O0 は NaN を返しました。例外をトラップしようと思うと、
c のプログラムをリンクせざるとえないのかな。

772 名前:デフォルトの名無しさん mailto:sage [2007/07/31(火) 23:20:20 ]
>>771
マニュアル味噌。

Module: USE IFPORT
Syntax
result = IEEE_FLAGS (action, mode, in, out)

gfortranの方は知らんが、F2003対応のIEEEモジュールを誰かが作ったとか書いてあったような。
記憶違いだったら、ごめんw


773 名前:デフォルトの名無しさん [2007/08/02(木) 03:31:02 ]
わざわざNanを検出する理由は何か?


774 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 09:17:03 ]
>>773
なんもない

775 名前:726 mailto:sage [2007/08/09(木) 12:58:16 ]
>>729
ずいぶん遅くなってしまいました。
私のやりたいことはデータを並び替えるだけなのですが、もともとの出力データは役所が絡んでいるので、
出力形式がオリジナルのものと違うと何かと説明が面倒なのです。
ありがとうございました。



776 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 10:45:29 ]
標準入力でファイル名入れるときに、普通のシェルみたいに、タブによるインクリメントサーチ使えたらなぁ
やっぱり無理だよね?



777 名前:デフォルトの名無しさん [2007/08/10(金) 14:36:40 ]
だれかこのプログラムの使い方教えてください
cera-www.dkrz.de/IPCC_DDC/info/Readme.gzip
ASCIIデータをなにかに変換するプログラムなのですが
自分無知でよくわかりません。
おねがいしますm(__)m

778 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 16:19:46 ]
ノットあナンバーはコンピューータサイエンスやるなら覚えとけボケ

779 名前:デフォルトの名無しさん mailto:sage [2007/08/10(金) 19:15:35 ]
>>777
只のデータフォーマットの説明とサンプルプログラムのようだが。

よくわからないなら使うなよ。

780 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 00:51:39 ]
>>778
Fortran利用者はコンピュータ・サイエンスなんか知らない。 
計算機自体をサイエンスだなんて何言ってんの?あんた馬鹿?って認識だろw

IEEEフォーマットが普及したのはありがたい。

IBMとクレイのフォーマットが最後までがんばっていたようだが、
各社の糞数値フォーマットもようやく死滅したようで、まずはめでたい。


Infのおかげで、ゼロ割エラーで止まらなくなったのはうれしい。
IF文で避けているはずなのに、投機的実行して0割エラーでアボンとか、ウンコ漏れそうになるw

正直NaNはあんまり助けにならん。


>>777
その質問じゃ答えようが無い。
もう少し具体的に質問すれば誰か答えてくれるだろう。

書いてあることは、>>779の言うとおりだ。
1.gzipで圧縮してあるからばらすが良い。解凍するとASCIIファイルが出る。
2.そのASCIIファイルのデータの書式。および読み込みサンプル。
の2点だ。



781 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 07:47:23 ]
中二病?

782 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 18:38:47 ]
夏休みで暇だから、宿題を持ってきたまえ。


783 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 12:27:55 ]
>>777
中身もちゃんと見ていないが、たぶん、IPCC(国際的な専門家でつくる気候変動に関する政府間パネル)
が、シミュレーションした結果をGRIB形式とかいうので保存してあるというやつの
中身の説明と、サンプルプログラムじゃないかな。

784 名前:デフォルトの名無しさん [2007/08/21(火) 11:56:55 ]
   OPEN(5,FILE='C:\\test-data.txt')
   DO 20 K=1,200
   READ(5,25)X(K),Y(K)
 25 FORMAT(2F20.0)
 20 CONTINUE 
のとき、test-data.txtはどんなデータを与えればいいのだ?
2F20.0がよくわからん。

785 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 23:10:05 ]
>>784
勝手に装置番号 5番を使うなよ。とか、
不用意に入力に書式仕様を使うなよ。というのは置いといて。

2F20.0
「20文字読み込んでその値を実数と見なす。小数点も指数も含まない場合は小数部のない実数と見なす。」
を 2回繰り返す。

786 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 00:32:58 ]
>>785
まぁ F20.0 を使ったのは筋のいいほうでないかいw




787 名前:デフォルトの名無しさん [2007/09/01(土) 03:44:42 ]
>>785
unit 番号は置いといて
読みこむ場合は、カラムの20,21カラムがしっかりしてたら
123.456
とかを入れても、123.456できちんと格納されてるよ。

788 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 10:11:05 ]
データの桁位置が絶対にズレないということなら大丈夫なんだけどね…

789 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 16:07:04 ]
Fortranで整数型 i = 1を文字型に変換するにはどうしたらよいでしょうか?
i = 1
hoge = char(i)
だとhogeに『のような文字が入りうまくいきません.

790 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 20:54:09 ]
>>789
二バイト文字を入れたいという質問か?


791 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 21:02:48 ]
>>789
>>587-590

792 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 21:39:58 ]
このスレは内部ファイルの質問の無限ループだなw


793 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 08:01:37 ]
超初心者用だからな。
それだけ初心者にとって理解しにくい部分ってことだろ。

794 名前:デフォルトの名無しさん mailto:sage [2007/09/07(金) 00:22:38 ]
次からテンプレに内部ファイルの使い方を書いといてくれ。

795 名前:デフォルトの名無しさん [2007/09/09(日) 19:45:39 ]
visual fortranだと動くのに、FTN95だとめちゃくちゃエラーがでて
コンパイルできません。金が無いんでフリーのFTNで動かしたいのですが
主な原因わかるかたいるでしょうか?

796 名前:デフォルトの名無しさん [2007/09/09(日) 21:04:57 ]
>>789
Fortran まだあるのかよ
Format変換かけて内部にWriteすればよいと思う

SFTNとかUFTNとかあるのだろうか...

$Branchi $do とか...



797 名前:エスパー mailto:sage [2007/09/09(日) 21:51:03 ]
>>795
Visual Fortran独自の機能を使っているからだよ。

798 名前:デフォルトの名無しさん [2007/09/10(月) 13:12:28 ]
FORTRAN使いが許容できるのはFORTRAN77迄だべ。
もはやFORTRANは死んでいる。C言語のプリプロセッサに成り下がった。

799 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 13:46:42 ]
>>798
終わってるのはCのほうだろw


800 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 18:49:41 ]
すいません。
整数を格納する1次元配列と整数のデータがあります.
整数データを重複を許さないで(重複データを飛ばして)配列に格納するにはどうすればよろしいでしょうか?


801 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 19:49:54 ]
>>800
sort
uniq

802 名前:デフォルトの名無しさん [2007/09/11(火) 05:00:09 ]
超初心者です。
format文の練習のために
学籍番号122番のアキラ君は  英語50点,国語80点、数学30点。この3科目の合計点は160点です。」
という文字を表示するプログラムを
   character*20 a
   integer b
   real c,d,e,f
   read(*,10)a,b,c,d,e,f
10 format(a6,i3,3i2,i3)
f=c+d+e
write(*,20)b,a,c,d,e,f
20+format('学籍番号',i3,'番の',a6,'君は',4x,'英語',i2,'点、国語',i2,'点、数学',i2,'点。この3科目の合計点は',i3,'点です。')
stop
end

というように作ったんですけど

0007) write(*,20)b,a,c,d,e,f
0008) 20+format('学籍番号',i3,'番の',a6,'君は',4x,'英語',i2,'点、国語',i2,'点、数学',i2,'点。この3科目の合計点は',i3,'点です。')
*** Non-blank label field in continuation line
0008) 20+format('学籍番号',i3,'番の',a6,'君は',4x,'英語',i2,'点、国語',i2,'点、数学',i2,'点。この3科目の合計点は',i3,'点です。')
WARNING - Characters found after column 72 (use -NO_WARN73 to suppress)
*** Unterminated or empty character constant
2 ERRORS,1 WARNINGS [<MAIN@>FTN77 Ver 4.03]

*** Compilation failed

とでてコンパイルできません。どこがいけないのでしょうか?

803 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 10:05:09 ]
>>802
20+format
プラス記号が紛れ込んで、継続行扱いになっている。それで矛盾。

あと72カラムはみ出している。


一応エラーメッセージを読めば書いてある。
初心者はエラーメッセージを読んでも分からないといって読まないのが普通だが、教養人なら読めw



804 名前:デフォルトの名無しさん [2007/09/12(水) 02:28:32 ]
>>803
返信ありがとうございます。
すいません。お聞きしたいのですが72欄をこえて書くにはどうしたらよいのでしょうか?
ネットで調べたら

6欄は72欄を超えてしまった場合、ここに何か文字を書けば(たいていは「+」を書く)、72欄を越す文であっても続けて書き続けることができるようになります。

と書いてあったのですけど自分の書き方ではいけないのでしょうか?
初心者名質問ですいません。ぜひ教えてください。


805 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 11:37:24 ]
>>804
72カラムを超えては書けないので、次の行に継続することになる。

20 format('学籍番号',i3,'番の',a6,'君は',4x,'英語',i2,'点、国語',
+ i2,'点、数学',i2,'点。この3科目の合計点は',i3,'点です。')

こんなかんじか。よく確かめていないが。


806 名前:デフォルトの名無しさん [2007/09/12(水) 14:59:44 ]
>>804
ありがとうございます。コンパイルできました。

しかしまたあらたな問題が。
ネットでは>>802のプログラムをコンパイルして実行したら

「学籍番号122番のアキラ君は  英語50点,国語80点、数学30点。この3科目の合計点は160点です。」という文が表示されます。

とかいてあったのですが実際に実行したらコマンドプロンプトの画面に

C:\fortaran>format

とでてきて何かを入力するみたいなんですがどのように入力すればいいのでしょうか?

アキラ,122,50,80,30,160

と入力すればいいのでしょうか?でもコマンドプロンプト上では日本語入力できなくてこまってるんですけど。

すいません。また初歩的と思われる質問になってしまって。
お手数ですがよろしくお願いします。



807 名前:デフォルトの名無しさん [2007/09/12(水) 15:01:26 ]
>>804
ありがとうございます。コンパイルできました。

しかしまたあらたな問題が。
ネットでは>>802のプログラムをコンパイルして実行したら

「学籍番号122番のアキラ君は  英語50点,国語80点、数学30点。この3科目の合計点は160点です。」という文が表示されます。

とかいてあったのですが実際に実行したらコマンドプロンプトの画面に

C:\fortaran>format

とでてきて何かを入力するみたいなんですがどのように入力すればいいのでしょうか?

アキラ,122,50,80,30,160

と入力すればいいのでしょうか?でもコマンドプロンプト上では日本語入力できなくてこまってるんですけど。

すいません。また初歩的と思われる質問になってしまって。
お手数ですがよろしくお願いします。

808 名前:デフォルトの名無しさん [2007/09/12(水) 15:02:19 ]
すいません連続投稿となってしまいました。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<350KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef