• ベストアンサー

Fortranの変数の配列の設定値を計算中に設定するには?

FortranでプログラムをつくるときAという変数にBの値の範囲で配列を設定する。A(B) このとき、プログラム作成時にはAには具体的な数値を設定しておかなくても良いですが、Bには具体的に配列の数を設定しておく必要があるように思います。  質問は、  プログラムが動く初めにはBに具体的な値を入れず、プログラム作動状況に応じてプログラム作動中にBの配列の範囲を設定できないものでしょうか?

  • puh
  • お礼率18% (34/183)

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

  • ベストアンサー
回答No.1

プログラム A がサブルーチンなら可能です。 メインプログラム  C=10  if( C .GT. 0 ) call A(C)  STOP  END   サブルーチン A  sub A(B)   dim(B)  returne

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

ALLOCATE文って使えなかったっけ?

関連するQ&A

  • FORTRAN90で書式に変数を使いたい

    FORTRAN90で書式に変数を使いたい 配列aの要素数が3である場合の書き出し方は例えば、  print '(3I5)', a ですよね。 配列aの要素数がnである場合、どう書き出せばよいのでしょうか?  print '(nI5)', a だとエラーが出ます。 繰り返し文を駆使する以外にないのでしょうか?あまり美しくない気がします。

  • 変数と配列をそれぞれ説明しなさい.また,問題によっては変数よりも配列を

    変数と配列をそれぞれ説明しなさい.また,問題によっては変数よりも配列を用いた 方が適切にプログラムを作成できる場合がある.どのようなケースか,具体的な例を用 いて説明しなさい.という課題があるのですが、特に「問題によっては変数よりも配列を用いた 方が適切にプログラムを作成できる場合がある.どのようなケースか」というのがものすごくわかりにくいです。申し訳ありませんが教えてください。

  • FORTRAN

    FORTRANについて聞かせてください。 WRITE(*,*) 'A= READ( *,*) A Aの値を0~0.15の範囲で0.01刻みで増やしていって実行したいのですが,どのようにプログラムを作成すればいいですか?? DOループだと思うのですが,あってますか? 分かる方いらっしゃったらお願いします。 FORTRANについてお勧めの初心者用ホームページがあればおしえてくださると助かります。

  • エクセルでの計算について【変数】

    ポケモンの努力値からの実数値の最適配分を考えようと思いエクセルを使うことにしました。 しかしながらやり方が思い浮かばないのでご助力お願いしたいです><! 変数は3つ程度使います。 A+B+Cを任意の数(0~510の範囲でひとつにつき最大255)とするとき、 現在入力されているA,B,C(この和を任意数とする)から計算される、 A’*B’と A’*C’の値 (どちらもある計算式にいれるだけのものです) より大きな値を取る、a,b,cを探し出すようなプログラムを作りたいです。 詳細: A'の計算=int((種族値*2+個体値+努力値/4)*レベル/100+レベル+10) B'とC' =int(int(種族値*2+個体値+努力値/4)*レベル/100+5)*性格補正) 種族値、個体値、レベル、性格補正は定数、努力値を変数としている。 説明が何雑ですみませんが、何かわからない事、出来そうな方法などありましたらお願いします!

  • メンバ変数に関して

    現在、C++にてプログラム作成しております。 1点プログラミングを行っている中で疑問になった点があります。 アイデア・方法等があれば教えて頂けると幸いです。 現在、メンバ変数として配列を定義したプログラムを作成しております。 そのメンバ変数を同クラス内のたくさんのメソッドから呼び出して処理を行っているのですが、そのメンバ変数の配列数を固定配列数ではなく、可変な配列数にしたいと考えております。 プログラムの実行後に取得した値をメンバ変数の配列数にしたいのです。 このように、メンバ変数の配列数の可変可を実施することは可能でしょうか?

  • fortran初心者です。

    fortran初心者です。 2つの3次元ベクトルa=(a1, a2, a3)、b=(b1, b2, b3)の各成分を入力したときに外積を求めるプログラムを配列、doループを使用して作成することは可能でしょうか?

  • Fortran において変数の定義

    現在Fortranを使いプログラムをしていますが、円の面積を計算するため変数を定義しているところでおかしな問題が出てきました。円周率を定義するところで自分でつけた変数名 PAI の値が入力データと違うことに気づきました。以下のように簡単なプログラムを作って試したのですが結果は同じくおかしな値が出てきました。 IMPLICIT REAL*8(A-Z) PAI=3.14159265 WRITE(*,1)PAI 1 FORMAT(E30.22) PAUSE END 結果は 0.3141592741012573000000E+01 とディスプレイに表示され、このあとにPAIを使った計算があるならこの値で計算されます。私としては、PAI=3.14159265と出力し、計算もしたいのですが... これは FORTRAN 自体の特有の性質なのでしょうか、それともソフト、ハード的な問題なのでしょうか? 尚、変数 PAI をファイルから読み込んだり、PAI=4.0*ATAN(1.0) (PAI=3.1415926535897930 となりますが)、PAI=3.14159265D+00などにすると正確に表示、計算出来ます。

  •  Fortran90を授業でやっています。

     Fortran90を授業でやっています。 入力されたNまでの素数を配列で返す関数をつくって、それを主プログラムで呼び出して素数を出力するという問題です。  素数を関数を用いて配列で返すまでは出来ました。しかし、その関数( Sosuu(N)としました。 )の要素数を(1000)と設定したため、Sosuu(N)の1番目から100番目までは素数が入っているのですが、それ以降の要素は値がすべて0になってしまいます。  なので、WRITE(*,*)Sosuu(N) とすると、素数が列挙された後さらに0が列挙されてしまいます。 0が出力されない方法は何かありませんか?

  • Fortran90/95の出力方法について

    Fortran90/95の出力方法について Fortran95において,変数の値をwrite文で出力した後に改行しない方法を教えてください. 具体的には次のProgram reiを用いて質問します. program rei implicit none integer i, n read(*,*) n do i = 1, n write(*,*) i end do end このプログラムを実行させnに3を代入すると次のように表示されます. 1 2 3 しかし,私としては次のように改行せずに表示させたいのです. 1 2 3 また,諸事情により配列は使用しません. プログラムをどのように改良すればよいのでしょうか.教えてください.

  • Java:クラスのインスタンスを配列の要素にする?

    問題集で次のプログラムを見掛ました。 A[] array = {new B(), new C()}; クラスA型の配列変数arrayにクラスBとクラスCのインスタンスを要素として代入しています。 このような配列を作成した場合、具体的にどのような使い方があるのでしょうか? 簡単なプログラムを書いて頂けると嬉しいです。 よろしくお願いします。

専門家に質問してみよう