• 締切済み

配列 x に入っているデータの個数を求める関数の作り方

配列 x に入っているデータのうちで、値が正(つまり x(i) .gt. 0.0d0 ) であるデータの個数を求める関数 numpos(x,n) を作り方を教えてください。n はデータの個数。 implicit real*8(a-h,o-z) real*8 x(1000) dummy = rand(13) 乱数の初期化 n = 1000 do 10 i=1,n x(i) = rand(0)-0.4d0 テストデータ 10 continue write(6,*) 'numpos =', numpos(x,n) stop end function numpos(x,n) implicit real*8(a-h,o-z) real*8 x(*) この部分が分かりません。(関数副プログラムなので、関数の値、つまり正のデータの個数は、関数名と同じ名前の変数、つまり numpos という名前の変数へ代入すること、らしいです。) return end とても困っていますし、急いでいます。 誰か助けてください。 よろしくお願いします。

みんなの回答

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

numpos = count(x > 0)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

配列の個々の要素を判定して、条件成立していたらカウンタ変数を+1するようなループを記述して、そのカウンタ変数の値を関数の戻り値にすれば良いかと。 質問文のコードで、do文を使った配列へのアクセスを記述できているのだから、たぶん貴方なら書ける筈。

0124ponta
質問者

補足

if(x(i).gt.0.0d0) then count(x(i)) = count(x(i))+1 endif これでいいんですか?? ちなみに上の記述は、多少コピーしたものなので、 正直内容はあまり理解できていません。 ので、できれば文章より記号で教えて頂けると助かります。