重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

配列 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

とても困っていますし、急いでいます。
誰か助けてください。
よろしくお願いします。

A 回答 (2件)

numpos = count(x > 0)

    • good
    • 0

配列の個々の要素を判定して、条件成立していたらカウンタ変数を+1するようなループを記述して、そのカウンタ変数の値を関数の戻り値にすれば良いかと。



質問文のコードで、do文を使った配列へのアクセスを記述できているのだから、たぶん貴方なら書ける筈。

この回答への補足

if(x(i).gt.0.0d0) then
count(x(i)) = count(x(i))+1
endif
これでいいんですか??

ちなみに上の記述は、多少コピーしたものなので、
正直内容はあまり理解できていません。
ので、できれば文章より記号で教えて頂けると助かります。

補足日時:2009/07/31 12:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!