くだすれFORTRAN(超初心者用)at TECHくだすれFORTRAN(超初心者用) - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト650:637 06/07/14 21:17:58 >>649 thx. いやー。数値解析の教科書とか見て気が重かったのだが、ありがとう。 さおりタン満足してくれるといいね。 651:649 06/07/14 21:40:27 >>650 >>649はあまりに手抜きw 誰かもっと良いの作ってやれw 2元2階の微分方程式なので、本のルンゲ・クッタルーチンにそのまま放り込めないw ちょっと脳みそ使う必要がある。数独1回分くらいw 今日暑いから考えらんねー 冷房ほしいよー 652:デフォルトの名無しさん 06/07/14 21:43:43 2,3,5.6,2.7,2,-,9,3 という「-」のような記号の混じった数列データが入ったファイルがあって、 それを下のように読み込みたいのですが、 real*8 a,b,c,d,e,f,g,h read(10,*) a,b,c,d,e,f,g,h これで「-」を読み込むときエラーが出て終了します。 「-」が出てきた場合には-1.0d-10などの任意の数字を代入しておく ような方法はないでしょうか? よろしくお願いします。 653:デフォルトの名無しさん 06/07/14 23:37:38 >>652 ほい。 F90で書いたが、主要なところはF77でもおk。 質問あればおk。 やり方は色々あるが、基本的にはまずデータを1行文字列として読み込んで、 カンマで区切って1こづつ数値として読み取るのが標準だろう。 ここでは読み取りエラーが起きてから例外処理的に”-”を処理しているが、 ”-”が多いならはじめから一度文字列で読み込んで処理するほうがすっきりする。 PROGRAM vip IMPLICIT NONE CHARACTER (LEN = 136) :: text REAL(KIND = 8) :: x(8) INTEGER :: i, ipos, io DO READ(9, *, IOSTAT = io) x IF (io == -1) EXIT IF (io > 0) THEN BACKSPACE(9) READ(9, '(A)') text DO i = 1, 8 ipos = INDEX(text, ',') - 1 IF (ipos == -1) ipos = LEN(text) ! 8th number IF (TEXT(ipos:ipos) == '-') THEN x(i) = -1.0d-10 ELSE READ(TEXT(1:ipos), *) x(i) END IF text = text(ipos + 2:) END DO END IF PRINT '(8g9.2)', x END DO STOP END PROGRAM vip 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch