課題 (07:スプレッドシート)

作業について

今回の課題は以下のパッケージに作成してください。

パッケージの名前
j1.lesson07

作成するクラスの名前は問題ごとに指示があります。下記を参照してください

課題の提出方法については下記を参照してください。

また、別のコンピューター上に移動する際には、下記を参考にプログラムを持ち帰ってください。

新しい内容

今回、スプレッドシートに関する新しい内容はありません。

問題

作成するクラスの名前
StDevS1

偏差値を計算するプログラム。

db07-1.txt, db07-2.txt, db07-3.txtなどを読み出してそれぞれの偏差値を計算するプログラムを作成してください。偏差値は次のような式で計算できます。

偏差値 = (得点 – 平均点) * 10 / 標準偏差 + 50

なお、db07-1.txtは次のように非常に多くの人の得点を含むデータです。「繰り返し」をうまく利用してプログラムを作成してください。標準偏差の求め方については出題の中で説明していきます。

ID 得点      
01k9901 81.0      
01k9902 83.0      
01k9903 95.0      
01k9904 92.0      
01k9905 75.0      
01k9906 43.0      
01k9907 86.0      
01k9908 30.0      
01k9909 71.0      
01k9910 78.0      
01k9911 92.0      
01k9912 22.0      
01k9913 77.0      
01k9914 66.0      
01k9915 49.0      
01k9916 89.0      
01k9917 79.0      
01k9918 54.0      
01k9919 20.0      
01k9920 79.0      
01k9921 43.0      
01k9922 79.0      
01k9923 37.0      
01k9924 81.0      
01k9925 43.0      
01k9926 83.0      
01k9927 94.0      
01k9928 95.0      
01k9929 70.0      
01k9930 67.0      
01k9931 32.0      
01k9932 40.0      
01k9933 84.0      
01k9934 100.0      
01k9935 37.0      
01k9936 63.0      
01k9937 100.0      
01k9938 79.0      
01k9939 91.0      
01k9940 59.0      
01k9941 91.0      
01k9942 82.0      
01k9943 53.0      
01k9944 95.0      
01k9945 90.0      
01k9946 87.0      
01k9947 55.0      
01k9948 52.0      
01k9949 75.0      
01k9950 97.0      

a. 平均点の計算

まずはdb07-1.txtに含まれる全員分の得点から平均点を計算するプログラムを作成してください。計算した平均点はメッセージダイアログに表示してください。

ヒント

「Spreadsheet.getDoubleArray(1, 1)」を利用すると、2列目のデータを2行目からすべて取り出して実数の配列にすることができます。これの「合計 / 人数」が平均点となります。また、人数は配列の長さと同じです。

b. 標本分散の計算

次に、標準偏差を計算するために「標本分散」というものを計算してください。標本分散は次のように計算できます。

標本分散 = 1 / 人数 * ∑((得点 – 平均点)2)

計算した結果は、平均値の代わりにメッセージダイアログに表示してください。(平均値は表示しないでください。)

c. 標準偏差の計算

次に、標本分散を計算して標本分散の代わりに表示してください。これは標準分散の正の平方根で計算できます。

Javaで平方根を計算するには、次のように書きます。

Math.sqrt(<実数>)

たとえば、Math.sqrt(100.0)の結果は実数の10.0となります。

ヒント

蛇足だと思いますが、Math.sqrt(<標本分散>)で標準偏差が返ってきます。

d. 偏差値の計算

最後に、それぞれの偏差値を計算してください。偏差値の計算式を再掲します。

偏差値 = (得点 – 平均点) * 10 / 標準偏差 + 50

ただし、特例として標準偏差が0.0(全員の得点が同じ)である場合には偏差値は無条件で50とします。これはdb07-3.txtで確認できます。

それぞれの偏差値は、該当する得点の隣の列(3列目)に出力してください。db07-1.txtでは次のようになるはずです。

ID 得点 偏差値    
01k9901 81.0 54.84540031726941    
01k9902 83.0 55.75108261956276    
01k9903 95.0 61.18517643332284    
01k9904 92.0 59.82665297988282    
01k9905 75.0 52.128353410389366    
01k9906 43.0 37.63743657369581    
01k9907 86.0 57.10960607300278    
01k9908 30.0 31.75050160878905    
01k9909 71.0 50.31698880580267    
01k9910 78.0 53.48687686382939    
01k9911 92.0 59.82665297988282    
01k9912 22.0 28.12777239961566    
01k9913 77.0 53.034035712682716    
01k9914 66.0 48.0527830500693    
01k9915 49.0 40.35448348057585    
01k9916 89.0 58.4681295264428    
01k9917 79.0 53.939718014976066    
01k9918 54.0 42.61868923630922    
01k9919 20.0 27.22209009732231    
01k9920 79.0 53.939718014976066    
01k9921 43.0 37.63743657369581    
01k9922 79.0 53.939718014976066    
01k9923 37.0 34.920389666815765    
01k9924 81.0 54.84540031726941    
01k9925 43.0 37.63743657369581    
01k9926 83.0 55.75108261956276    
01k9927 94.0 60.732335282176166    
01k9928 95.0 61.18517643332284    
01k9929 70.0 49.864147654656    
01k9930 67.0 48.50562420121598    
01k9931 32.0 32.656183911082394    
01k9932 40.0 36.27891312025579    
01k9933 84.0 56.20392377070943    
01k9934 100.0 63.44938218905621    
01k9935 37.0 34.920389666815765    
01k9936 63.0 46.69425959662928    
01k9937 100.0 63.44938218905621    
01k9938 79.0 53.939718014976066    
01k9939 91.0 59.373811828736144    
01k9940 59.0 44.88289499204259    
01k9941 91.0 59.373811828736144    
01k9942 82.0 55.29824146841608    
01k9943 53.0 42.165848085162544    
01k9944 95.0 61.18517643332284    
01k9945 90.0 58.92097067758947    
01k9946 87.0 57.56244722414945    
01k9947 55.0 43.071530387455894    
01k9948 52.0 41.71300693401587    
01k9949 75.0 52.128353410389366    
01k9950 97.0 62.09085873561619