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 ] すいません連続投稿となってしまいました。