• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォートランのソース変更を試みています)

フォートランのソース変更を試みています

このQ&Aのポイント
  • フォートランのソース変更についてご教授願いたいです。
  • 現在、ファイルAを読み込んで計算後に別ファイルへ書き出す処理を行っていますが、配列を使って連続処理する方法を知りたいです。
  • 具体的には、ファイルAの(1)~(3)のポイント値を配列に格納し、順番に計算していく方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.1

オリジナルでは、最初にトータルのグループ数を読み込んでいるとのことですが、この値を2以上にした場合の処理(繰り返し処理)は考慮されていないのでしょうか。 オリジナルでは、   41 33 33  これらを、I , J , K の各変数に読み込んでいるとするなら。 例えば、   41 33 33 ---(1) は、      I( 1 ) , J( 1 ) , K( 1 ) に   21 33 12 ---(2) は、      I( 2 ) , J( 2 ) , K( 2 ) に         11 33 21 ---(3) は、      I( 3 ) , J( 3 ) , K( 3 ) に読み込んでから 処理するというように考えてみてはいかがでしょうか。

sanakazu
質問者

お礼

早々のアドバイスをありがとうございます。 オリジナルの繰り返し処理は考慮されていません、そのため繰り返し処理ができるよう修正を加えたいのですが・・・。その配列が理解不足のため苦しんでおりました。 似たようなソースがあり、それを流用したところ繰り返し処理は解決されたようです。他の箇所で問題があるようなので、色々と試していたため御礼が遅くなりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • フォートランでの相互相関関数の計算

    酒器について質問です。 ある2つのポイントで計測した実験データがあります。 その2つの実験データの間の時間のずれΔtを相互相関関数を用いて求めたいと考えています。 参考書やインターネットを通して理論は理解できるのですが、それをフォートランを用いた場合どのようにして計算させるのか分かりません。 具体的のどのようにして計算したらよいのでしょうか? どのようなプログラム文を打てばよいか教えていただきたいです。 流れとしてはデータ数1000の場合 2つのファイルをopen データ読み込み f() g() do p=-500,500 do i=1,1000 s=f(i)*g(i+p) ss=ss+s ........... のような流れになるのでしょうか? どなたか分かる方是非教えてください よろしくお願いします

  • Excel VBA 配列処理後の動作について

    Dim v As Variant             1.配列を使用して処理    v = (範囲)    処理      Range("A200").End(xlUp).Select    2.セルをA列最終行に移動 Do  If Selection = Range("A2") Then    処理    Exit Do  Else    処理    Selection.End(xlUp).Select  End if Loop 上記のように記述すると、配列処理の後の動作がうまくいきません。 セルは最終行に移動しているのですが、Do Loop では Selection は常に セルA2 として 認識されてしまいます。 If文の Selection を Selection.Address とするとうまく動作することを偶然見つけたので、 そちらで処理していくことにしましたが、なぜSelection のみでは期待通りに動作しないのでしょう? どなたかご教示いただけないでしょうか。 よろしくお願いいたします。

  • フォートラン

    次のような問題 質量mの質点が、次の運動方程式にしたがって1次元的に運動しているとする m*(d^2x/dt^2)=-αx+βx^2 (♯1) ここでxは質点の位置座標、αおよびβは適当な次元を持つ正の定数である。 という問題を 任意の初期条件から出発して数値解を求めるための手順書を作成したいのですが、Fortranで書きたいのですが どのように書けばいいのかわかりません。 考えたこと数値計算に適した形に直すと ((♯1)の無次元化 x=(m^a)(α^b)(β^c)X t=(m^d)(α^e)(β^f)T a,b,c,d,e,fは未知数。これを、微分方程式に代入して(d^2X/dT^2)=X+X^2)

  • 教えて下さい

    c言語の課題で困っています。 a[10],b[10],c[10],d[10],e[10],f[10],g[10],h[10],i[10],j[10] 要素数[10]の配列がa~jまであります。 二次元配列を用いないで(1)最初にa~jの配列を無作為に5個抽出し、(2)抽出された5個 の配列の中から一個づつの要素を無作為(ランダム)に表示するプログラムをそれぞれfor文、do~while文で書きなさい。といゆうものです。よろしくお願いします。

  • フィックの第二法則の刻み時間(フォートラン)

    第二法則について数値解析を行い、 フォートランによって dt=1.0 dx=1e-4 d=2e-12 a=d*dt/(dx)**2 do 300 j=0,3600 c(j,0)=0.0 c(j,20)=2.0 do 400 i=1,19 c(j+1,i)=c(j,i)+a*(c(j,i+1)-2.0*c(j,i)+c(j,i-1)) 400 continue 300 continue として一秒ごとに計算し、一時間後までの各時間、各位置の濃度を求めています。 (jは時間、iは位置を表しています。) このとき、刻み時間t=1として計算しているのですが、これを0.1秒で計算したいとき、 do 300 j=0,3600 を do 300 j=0,3600,0.1 c(j+1,i) は c(j+0.1,i) としなくてはいけないのでしょうか? それとも1のままでよいのでしょうか。 どなたか、どうか教えてください。 ちなみに、上のようにかえてもプログラムが通らないことはわかっています。 聞きたいのは、「刻み時間を変えると濃度計算の中身と計算のステップも変えなくてはいけないのか」ということです。 わかりにくくて申し訳ありません。 どうかお願い致します。

  • fortran90/95のSUM関数について

    fortran90/95のSUM関数について fortran90/95のSUM関数について、SUM関数を使うときは範囲を指定できるのでしょうか? 例えば、 integer A(3,2)/1,2,3,4,5,6/ A=1,4 2,5 3,6 の配列があるとします。 列の和を求めたいのですが、最後の行(3行目)を足したくありません。 結果としては 1+2=3 4+5=9 にしたいのです。 このようなときは、やはりdo文にするしかないのでしょうか。 実際のプログラムではdo文があまりにも多く、見づらいのでSUM関数を使いたいのですが... どなたかご存知の方、お教えいただけないでしょうか。 よろしくお願いします。

  • 変数の配列の使い方教えてください。(初心者)

    VBで関数を作ってるのですが、 Function kansuu as Long Dim a(50) as Long Do (処理) Loop End Function ↑こんな形になってまして、変数a(0)~a(50)にはそれぞれ値が入ってます。{a(50)まで全部使うとは限りません。} Do文を抜ける条件として、途中に「もしa(0)~a(50)の値が全て"0"ならDo文を抜ける」という処理を入れたいのですが、変数aの"配列要素全て"という文の記述方法が分かりません。どなたか教えてください

  • PHP 多次元配列の次要素を返す便利関数

    PHP5を独学中の者です。 1次元や多次元配列を扱ってきて、次元数が決定されていない配列を自作関数に渡す事で、 現在のポイントの次要素を返す便利関数を考案中です。 【関数に求める利点】  ・引き渡した配列の次元数(1~n)に関わりなく、現在のポイントの次要素を返す。 【関数を使用した想定コード】   $e[0][0] = "a1";   $e[0][1] = "a2";   $e[0][2] = "a3"; // $e配列の次要素を取得 $r = 自作関数($e);  ※ 上記コードでは、現在のポイント($e[0][1])の次要素($e[0][2])を、$rに "a3" を返す   $e[0][0][0] = "a1";   $e[0][0][1] = "a2";   $e[0][0][2] = "a3"; // $e配列の次要素を取得 $r = 自作関数($e);  ※ 上記コードでは、現在のポイント($e[0][0][0])の次要素($e[0][0][1])を、$rに "a2" を返す 関数に対して引数を与えたり、色々と試行錯誤中ですが、アドバイス頂ければ嬉しいです。

    • 締切済み
    • PHP
  • 1行ずつではなくまとめてファイル出力したいのですが

    Cは初心者です。というかプログラム自体ずぶの素人です。 パラメーター1パラメーター2パラメーター3を使って計算をし、結果として パラメーター1,パラメーター2,パラメーター3,数値2,数値3,数値4,数値5,数値6,数値7 というような形式で1行ファイル出力をし、 パラメーターを変えて(for文)またファイル出力をし、とかなりの回数繰り返す計算をしております。 (元々AWKで動いていた自作プログラムの移植です) 現在、 #include <fstream> ofstream file1("c:\\data.csv",ios_base::app |ios_base::out) ; file1 << parameter1 << "," << parameter2 << ~中略~ << "," << value1 << "," << value2 << "," << ~中略~ "\n" ; のようにファイル出力しているのですが、ファイルサイズがでかくなってくると、もの凄く遅くなります。 ひょっとして、ファイルオープン→ファイル末尾まで開く→1行書き込む→ファイルクローズ→ の繰り返しで、だからファイルが大きくなると遅くなるのではないかという気がしているのですが、 何行も(1000行とか1万行とか5万行とか)一気に出力する方法はないでしょうか? まず、どうやってデータを溜め込み、次にどういう出力方法があるのか、教えていただけないでしょうか。 parameter1~Value7(本当は倍以上ありますが)をそれぞれ全て配列にし、ファイルをオープンして閉じずにfor文で書き込む、なんてのも考えたのですが、どうしたら良いか判らずギブアップです。 もうちょっとスマートに、file1のところを配列にするとか、file1にどんどんデータを書き加えて巨大な一文にしてしまうとか、何か方法はないでしょうか? なお、cはマイクロソフトが只で配っているVisual Studio の VisualC++ Express Editionを、よく判らないまま使用しております。 先週ダウンロードしましたので、おそらく最新版だと思います。 ポインタの辺りは、理屈は解りましたがスラスラ使いこなせるということはなく、他人のソースを見てもよく判らない状態です。 というか、どこまで書き換えて良い文字で、どこまでが標準関数(?)等の書き換えられない文字かもよく解っていないレベルです。 よろしくお願いいたします。

  • ProgressBarを用いる場合、全体の処理数の求め方(Do Loop文に関して)。

    ProgressBarを用いる場合、全体の処理数を求めますが、Do Loopを用いる場合、For文と異なり必ずしもすぐに全処理数が分かるわけではありません。そのような場合、どのように全処理数を求めればよいですか? 私は、あるフォルダにあるファイルすべてを処理するプログラムを作りました。Do Loopで全てのファイルを参照し終わるまでをUntilの条件としています。したがって、いくつのファイルがあるかは分かりません。