• 締切済み

配列 x に入っているデータの最大値、最小値を求めるサブルーチンとそのヒストグラムの作り方

配列 x に入っているデータの最大値、最小値を求めるサブルーチン maxmin(x,n,xmax,xmin) を作り方を教えてください。 n はデータ数。 最大値、最小値はそれぞれ xmin, xmax に代入する。 次に、そのサブルーチンを用い、x に入っているデータのヒストグラムを作成するプログラムを作り方も教えてください。 (途中までしか分かりません) implicit real*8(a-h,o-z) real*8 x(10000) integer count(100) ndiv = 40 分割数は 40 にする n = 10000 データ数は 10000 dummy = rand(13) 乱数の初期化 do 10 i=1, n sum = 0.0d0 do 20 j=1,5 sum = sum + rand(0) 5個の乱数の和 20 continue x(i) = sum 10 continue call maxmin(x,n,xmax,xmin) 最大・最小値を求める dx = (xmax - xmin)/ndiv 分割幅 !!count をゼロで初期化する do ループを追加!!(よく分かりません) !!ヒストグラムを作成する do ループを追加!!(よく分かりません) do 100 k=1, ndiv write(6,*) xmin+(k-0.5d0)*dx, count(k) データの中心値と個数を出力 100 continue stop end subroutine maxmin(x,n,xmax,xmin) implicit real*8(a-h,o-z) real*8 x(*) !!この部分を作成してサブルーチンの完成のさせ方が分かりません!! return end ところどころが分かりません。 とても困っていますし、急いでいます。 だれか教えてください。 よろしくお願いします。

みんなの回答

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

「ところどころがわからない」と言ってるけど, 動作の中心となるところが「分からない」ってことは端的にいえば「なにも分からない」のと同じだよね. で, 自分がやるとしたらどのようにするか書いてみてください.

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

最大値、最小値については、参考URL。 ヒストグラムについては、最大値最小値を求めてから、80×25くらいの文字配列に収まるようにスケール(最小値→0、最大値→80)して、そのなかで適宜レンダリングすればよいかと。 面倒ならExcelやgnuplotを利用したほうが賢いです。 学校の課題とかで無ければですが。

参考URL:
http://oshiete1.goo.ne.jp/qa5165817.html

関連するQ&A

  • 配列xのヒストグラムを求めるサブルーチンhist(x,n,ndiv,count)の作り方

    配列xに入っているデータのヒストグラムを求めるサブルーチンhist(x,n,ndiv,count)の作り方 が分かりません。 subroutine hist(x,n,ndiv,count) implicit real*8(a-h,o-z) real*8 x(*) integer count(*) C まずデータの最大値、最小値を求める: call maxmin(x,n,xmax,xmin) C xminからxmaxまでをndiv等分する。分割幅は dx = (xmax-xmin)/ndiv !!この部分のプログラムが分かりません!! return end 教えてください。 よろしくお願いします。

  • 配列Xの最大値、最小値を求めるサブルーチンmaxminの作り方

    配列Xに入っているデータの最大値、最小値を求めるサブルーチンmaxminの作り方を教えてください。(n:データ数) subroutine maxof(x,n,xmax,xmin) implicit real*8(a-h,o-z) real*8 C 最大値は変数xmaxに、最小値は変数xminに代入する  !!この部分が分かりません!! return end 教えてください。 よろしくお願いします。

  • 配列 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 とても困っていますし、急いでいます。 誰か助けてください。 よろしくお願いします。

  • プログラムの勉強をしているのですが・・・・・・

    以下のプログラムを組もうとしているのですが、ある所から分からなくなりました。ぜひ、教えてください。 配列x(1)=3, x(2)=10, x(3)=4, x(4)=4, x(5)= 1 の最大値と最小値平均値を計算する関数副プログラムmaxmin( x, N, xmax, xmin, xave)を作る。  integer x(5) N=5 x(1)=3 …   ←省略 call maxmin( x, N, xmax, xmin, xave) write(6,*) “max=", xmax write(6,*) “min=“, xmin write(6,*) “xave=“, xave end subroutine maxxmin(x,N,xmax,xmin,xave) ここから先が分かりません。どうしたら良いのでしょうか? 分かる方、ぜひ教えてください。 よろしくお願いします。 ちなみに使ってるエディタはxemacsです。

  • 配列Xの平均値を求める関数副プログラムaver(x,n)の作り方

    配列xに入っているデータの平均値を求める関数副プログラムaver(x,n)の作り方がよく分かりません。 function aver(x,n) implicit real*8(a-h,o-z) real*8 x(*) !!この部分が分かりません。!! return end 教えてください。 よろしくお願いします。

  • Scilabを使ったジュリア集合の描画プログラム

    今、Scilabを使用してジュリア集合(充填およびそれ以外を含む集合)を描画するプログラムを書いています。 以前書いたC言語のプログラムをもとに書いているのですが、正確に描画できません。どうしたらよいでしょうか。教えてください。 与える条件は右上と左下の座標(複素数形式)と定数Cの値です。 以下に掲載したのが製作したプログラムです。 よろしくお願い致します。 //描画エリアの右上と左下の座標を複素数で設定する Z =[ -1.2-1.2*%i;1.2+1.2*%i]; //複素定数(C)を設定する C=0+0*%i; //描画エリアのx座標とy座標の各最小値と最大値を計算する。 xmin = min(real(Z)); xmax = max(real(Z)); ymin = min(imag(Z)); ymax = max(imag(Z)); Cr = real(C); Ci = imag(C); //描画点数を800×800に設定する。 N = 800; //各増分を計算する。 dx = (xmax-xmin)/(N-1); dy = (ymax-ymin)/(1-N); //プロットデータを"0"で初期化 map=zeros(N,N); //ジュリア集合の描画 i=1; for X=xmin:dx:xmax j=1; for Y=ymax:dy:ymin for k=1:30 x = X ^ 2 - Y ^ 2 + Cr; y = 2 * X * Y +Ci; if x^2 +y^2 > 4 then break; end map(j,i)=k; X=x; Y=y; end j=j+1; end i=i+1; end //プロットするための設定 Re = xmin:dx:xmax; Im = ymax:dy:ymin; clf(0); Sgrayplot(Re,Im,map');

  • MATLAB で配列みたいなものを

    乱数を発生させて、ヒストグラムに表示させたいのですが、 内部関数のrandをつかわずに 例えば、乗算型合同法 x(n+1)=15x(n) mod (10^6+1)               x(0)=1 (x(n)を15倍して10^6+1で割ったあまりをx(n+1)とする。) で発生する数列x(n)を100万でわって0~1の乱数列が発生します。 これをヒストグラムで表したいのですが、いまいち分かりません。どうかよろしくお願いします。 内部関数を使ったものは簡単で n=10000; x=rand(1,n); hist(x); で1万個の乱数の分布がわかるのですが。 ばからしい質問ですいません。

  • 数値データの規格化

    数値データの規格化の方法を教えてください 最大値がXmax,最小値がXminであるN個のデータ群 Xn(n=1,2,3・・・)があります. このデータを最大値がA,最小値がBとなるように規格化したいです. 元のデータ群Xnで最大値を1,最小値を0となるような規格化は分かるのですが, そこから,最大値をA,最小値をBとなるように変換する方法が分かりません. よろしくお願い致します.

  • mの平方根の連分数展開なのですがうまく動きません。

    subroutine keisan(m) integer a,a0,n,i,m real t,X,Y,Z t=sqrt(real(m)) a0=int(t) write(*,*) 'a0=',a0 a=a0 X=1 Y=0 Z=1 do 10 n=1,20 if (Z==0.0) exit X=X*Z Y=Z*(-Y+real(a)*Z) Z=X*X*real(m)-(real(a)*Z-Y)**2 do 100 i=1,X if(real(i)==X) then X=X else if(((mod(int(X),i))==0).AND.((mod(int(Y),i))==0).AND.((mod(int(Z),i))==0)) then X=X/real(i) Y=Y/real(i) Z=Z/real(i) else X=X endif endif 100 continue a=int((X*t+Y)/Z) write(*,*) 'a',n,'=',a 10 continue end subroutine サブルーチンのみ載せてますけど・・・・どうなのでしょう??

  • エクセルの1シート内にある複数の散布図のx軸とy軸の最大目盛、最少目盛

    エクセルの1シート内にある複数の散布図のx軸とy軸の最大目盛、最少目盛、目盛間隔を揃えるにはどのようにしたら良いか教えてください。いくつかwebsiteで調べて下記のようにしてみましたが、x軸の目盛を変更するところで、失敗してしまいます。 よろしくお願いします。 Sub XY軸() Dim Ymin Ymin = InputBox("Y軸の最少?") If IsNumeric(Ymin) Then Range("C2").Value = Ymin Else MsgBox "入力NG!" End If Dim Ymax Ymax = InputBox("Y軸の最大?") If IsNumeric(Ymax) Then Range("C3").Value = Ymax Else MsgBox "入力NG!" End If Dim Y Y = InputBox("目盛間隔?") If IsNumeric(Y) Then Range("C4").Value = Y Else MsgBox "入力NG!" End If Dim xmin xmin = InputBox("X軸の最少?") If IsNumeric(xmin) Then Range("D2").Value = xmin Else MsgBox "入力NG!" End If Dim Xmax Xmax = InputBox("X軸の最大?") If IsNumeric(Xmax) Then Range("D3").Value = Xmax Else MsgBox "入力NG!" End If Dim X X = InputBox("Xの目盛間隔?") If IsNumeric(X) Then Range("D4").Value = X Else MsgBox "入力NG!" End If Dim co As ChartObject For Each co In ActiveSheet.ChartObjects With co.Chart With .Axes(xlValue) .MinimumScale = Range("C2").Value '最小値 .MaximumScale = Range("C3").Value '最大値 .MajorUnit = Range("C4") '目盛間隔 End With With .Axes(xlCategory) .MinimumScale = Range("D2").Value '最小値 .MaximumScale = Range("D3").Value '最大値 .MajorUnit = Range("D4") '目盛間隔 End With End With Next End Sub

専門家に質問してみよう