問題番号 | 問題 | ヒント | 回答 |
10,000円を利率5%で一年間預金した場合,元利合計を求めるメソッド を書きなさい. |
# メソッドfを記述しなさい(引数は変数m と r の値) m = 10000 r = 0.05 printf( "%d円を利率%3.2fで預けた時の元利合計は%d円です\n" , m , r , f( m , r ) ) |
回答 | |
10,000円を利率5%で二年間預金した場合,元利合計を求めるメソッド を書きなさい. |
# メソッドfを記述しなさい(引数は変数 m , r , n の値) m = 10000 r = 0.05 n = 2 printf( "%d円を利率%3.2fで%d年間預けた時の元利合計は%d円です\n" , m , r , n , f( m , r , n ) ) |
回答 | |
問題2において巾乗関数をメソッドとして定義しなさい. |
def f( m , r , n ) a = m * pow( ( 1 + r ) , n ) return a end # 巾乗メソッドpowを定義しなさい m = 10000 r = 0.05 n = 2 printf( "%d円を利率%3.2fで%d年間預けた時の元利合計は%d円です\n" , m , r , n , f( m , r , n ) ) |
回答 | |
10,000円を利率5%で預金した場合,元利合計が何年後に2倍以上となるのかを 求めるプログラムを問題3で定義した二つのメソッドを用いて, 記述しなさい. |
# 問題3のメソッドf def f( m , r , n ) end # 問題3のメソッドpow def pow( x , y ) end m = 10000 r = 0.05 # 元利合計が20,000円以上となる年数を求めるプログラム # を書きなさい |
回答 | |
問題4と同様に10,000円を利率5%で預金した場合,元利合計が 2倍,3倍...,10倍以上となる年数を求めるプログラムを記述 しなさい. |
# 問題3のメソッドf def f( m , r , n ) end # 問題3のメソッドpow def pow( x , y ) end m = 10000 r = 0.05 # 元利合計が2,3...10倍以上となる年数を求めるプログラムを # 記述しなさい |
回答 | |
課題5において,金額と利率を入力できるようにプログラム を修正しなさい |
# 問題3のメソッドf def f( m , r , n ) end # 問題3のメソッドpow def pow( x , y ) end # 金額,利率の入力 # 元利合計が2,3...10倍以上となる年数を求めるプログラムを # 記述しなさい |
回答 | |
整数xが素数かどうかを判定するメソッドを記述しなさい. (以下に効率良く求めるかは問わない) |
# 素数かどうかを判定するメソッドを記述しなさい x = 6523 if prime( x ) == 1 then printf( "%dは素数ではないです\n" , x ) else printf( "%dは素数です\n" , x ) end |
回答 | |
問題7で定義したメソッドを用いて,整数2から1000の中で素数を 求めるプログラムを記述しなさい (いかに効率良く求めるかは問わない) |
# 問題7のメソッド def prime( x ) end # 2から1000の中から素数を求めるプログラムを記述しなさい |
回答 | |
整数xの階乗を求めるメソッドを記述しなさい. |
# 階乗を求めるメソッドを記述しなさい x = 5 printf( "%dの階乗は%dです\n" , x , f( x ) ) |
回答 | |
問題9のメソッドを用いて,コンビネーション(nCr)(n>0,n>=r)を求める メソッドを記述しなさい. |
# 問題9の階乗のメソッド def f( x ) end # コンビネーションを求めるメソッドを書きなさい n = 10 r = 5 printf( "%dC%dは%dです\n" , n , r , comb( n , r ) ) |
回答 | |
10C1,10C2,...,10C10 を求めるプログラムを問題10のメソッドを用いて書きなさい. |
# 階乗のメソッド def f( x ) end # コンビネーションのメソッド def comb( n , r ) end # 10C1から10C10まで求めるプログラムを書きなさい. |
回答 | |
問題11と同様にnCrにおいて,nを1から10まで変えて それぞれのコンビネーションを求めるプログラムを書きなさい. |
# 階乗を求めるメソッド def f( x ) end # コンビネーションを求めるメソッド def comb( n , r ) end # nCr(n=1,2...,10)を求めるプログラムを書きなさい |
回答 | |
二次元配列xにAからE(名前)までの点数が格納されているものとする. x = [ [ 'D' , 'A' , 'E' , 'C' , 'B' ] , [ 70 , 85 , 60 , 45 , 30 ] ] 配列xと名前を引数として渡して,その点数を返すメソッドを記述しなさい. (存在しない名前を引数として渡した場合は-1を返すようにしなさい) |
# 点数を返すメソッドfを記述しなさい x = [ [ 'D' , 'A' , 'E' , 'C' , 'B' ] , [ 70 , 85 , 60 , 45 , 30 ] ] a = 'B' if f( x , a ) != -1 then printf( "%sさんの点数は%dです\n" , a , f( x , a ) ) end |
回答 | |
問題13を拡張し,多次元配列xにAからEの各点数が格納されているものとする. x = [ [ 'D' , 'A' , 'E' , 'C' , 'B' ] , [ 70 , 85 , 60 , 45 , 30 ] , [ 90 , 45 , 35 , 60 , 50 ] , [ 100 , 60 , 75 , 50 , 10 ] ] 配列xと名前を引数として渡して,その合計点を返すメソッドを記述しなさい. (存在しない名前を引数として渡した場合は-1を返すようにしなさい) |
# 合計点を返すメソッドを記述しなさい x = [ [ 'D' , 'A' , 'E' , 'C' , 'B' ] , [ 70 , 85 , 60 , 45 , 30 ] , [ 90 , 45 , 35 , 60 , 50 ] , [ 100 , 60 , 75 , 50 , 10 ] ] a = 'B' if f( x , a ) != -1 then printf( "%sさんの合計点数は%dです\n" , a , f( x , a ) ) end |
回答 | |
問題13を拡張し,多次元配列xにAからEの各点数が格納されているものとする. x = [ [ 'D' , 'A' , 'E' , 'C' , 'B' ] , [ 70 , 85 , 60 , 45 , 30 ] , [ 90 , 45 , 35 , 60 , 50 ] , [ 100 , 60 , 75 , 50 , 10 ] ] 配列xと名前を引数として渡して,それぞれの点数を配列として返すメソッド を記述しなさい. (存在しない名前を引数として渡した場合は'nil'返すようにしなさい) |
# それぞれの点数を配列として返すメソッドを記述しなさい x = [ [ 'D' , 'A' , 'E' , 'C' , 'B' ] , [ 70 , 85 , 60 , 45 , 30 ] , [ 90 , 45 , 35 , 60 , 50 ] , [ 100 , 60 , 75 , 50 , 10 ] ] a = 'A' r = f( x , a ) if r != nil then printf( "%sさんの点数は%dと%dと%dです\n" , a , r[ 0 ] , r[ 1 ] , r[ 2 ] ) end |
回答 | |
問題13の配列xにおいて,配列xと点数を引数として渡して, 対応する名前(AからE)を返すメソッドを記述しなさい. x = [ [ 'D' , 'A' , 'E' , 'C' , 'B' ] ,[ 70 , 85 , 60 , 45 , 30 ] ] (存在しない場合はnilを返すようにしなさい) |
# 名前を返すメソッドを記述しなさい x = [ [ 'D' , 'A' , 'E' , 'C' , 'B' ] , [ 70 , 85 , 60 , 45 , 30 ] ] a = 60 if f( x , a ) != nil then printf( "点数が%d点なのは%sさんです\n" , a , f( x , a ) ) end |
回答 | |
課題16において,同じ点数が存在していても問題ないように,該当する 名前を配列で返すようにメソッドを修正しなさい. x = [ [ 'D' , 'A' , 'E' , 'C' , 'B' ] , [ 70 , 85 , 60 , 45 , 70 ] ] (存在しない場合は空の配列を返すようにしなさい) |
# 該当する名前を配列で返すように問題16のメソッドを修正しなさい x = [ [ 'D' , 'A' , 'E' , 'C' , 'B' ] , [ 70 , 85 , 60 , 45 , 70 ] ] a = 70 m = f( x , a ) if m.length != 0 then printf( "点数が%d点なのは" , a ) m.length.times { |i| printf( "%sさん " , m[ i ] ) } printf( "です\n" ) end |
回答 | |
二つの配列xとyがある場合,それぞれの配列の要素の合計値を求める メソッドを記述しなさい. x = [ 7 , 6 , 4 , 2 , 5 ] y = [ 24 , 20 , 14 , 8 ,12 ] |
# 配列の要素の合計値を求めるメソッドを記述しなさい def sum( x ) end x = [ 7 , 6 , 4 , 2 , 5 ] y = [ 24 , 20 , 14 , 8 ,12 ] s_x = sum( x ) s_y = sum( y ) printf( "配列xの合計は%d,配列yの合計は%dです\n" , s_x , s_y ) |
回答 | |
問題18において,それぞれの配列の要素の自乗の合計(平方和)を求める メソッドを追加しなさい. |
# 配列の要素の合計値を求めるメソッドを記述しなさい(問題18) def sum( x ) end # 配列の要素の二乗の合計を求めるメソッドを記述しなさい def sum2( x ) end x = [ 7 , 6 , 4 , 2 , 5 ] y = [ 24 , 20 , 14 , 8 ,12 ] s2_x = sum2( x ) s2_y = sum2( y ) printf( "配列xの二乗和は%d,配列yの合計は%dです\n" , s2_x , s2_y ) |
回答 | |
問題19において,配列xとyの内積(要素の積の和)を求めるメソッドを 追加しなさい. |
# 問題18のメソッドと同じ def sum( x ) end # 問題19のメソッドと同じ def sum2( x ) end # 配列xとyの内積(積和)を求めるメソッドを記述しなさい def sum_xy( x , y ) end x = [ 7 , 6 , 4 , 2 , 5 ] y = [ 24 , 20 , 14 , 8 ,12 ] s_xy = sum_xy( x , y ) printf( "配列xとyの内積は%dです\n" , s_xy ) |
回答 | |
問題20において,配列xおよびyの残差平方和を求めるメソッドを 追加しなさい. (配列xの残差平方和は sum2(x)-sum(x)**2.0/x と求まる) |
# 問題18のメソッド def sum( x ) end # 問題19のメソッド def sum2( x ) end # 問題20のメソッド def sum_xy( x , y ) end # 残差平方和を求めるメソッドを記述しなさい def sr( x ) end x = [ 7 , 6 , 4 , 2 , 5 ] y = [ 24 , 20 , 14 , 8 ,12 ] sr_x = sr( x ) sr_y = sr( y ) printf( "配列xの残差平方和は%f,配列yは%fです\n" , sr_x , sr_y ) |
回答 | |
問題21において,配列xとyの残差平方和を求めるメソッドを 追加しなさい. (配列xとyの残差平方和は sum_xy(x,y)-sum(x)*sum(y)/x.length と求まる) |
# 問題18のメソッド def sum( x ) end # 問題19のメソッド def sum2( x ) end # 問題20のメソッド def sum_xy( x , y ) end # 問題21のメソッド def sr( x ) end # 配列xとyの残差平方和を求めるメソッドを記述しなさい def sr2( x , y ) end x = [ 7 , 6 , 4 , 2 , 5 ] y = [ 24 , 20 , 14 , 8 ,12 ] sr_xy = sr2( x , y ) printf( "配列xとyの残差平方和は%fです\n" , sr_xy ) |
回答 | |
問題18から22で定義したメソッドを用いて,配列xとyの回帰分析 (y=ax+b)を行なう.傾きを求めるメソッドを追加しなさい. (傾きは sr2(x,y)/sr(x) と求まる) |
# 問題18から22のメソッド def sum( x ) end def sum2( x ) end def sum_xy( x , y ) end def sr( x ) end def sr2( x , y ) end # 傾きを求めるメソッドを記述しなさい. def reg_a( x , y ) end x = [ 7 , 6 , 4 , 2 , 5 ] y = [ 24 , 20 , 14 , 8 ,12 ] a = reg_a( x , y ) printf( "配列xとyを回帰分析した時の傾きは%f\nです" , a ) |
回答 | |
問題23と同様に,配列xとyの回帰分析(y=ax+b)を行なう場合, 切片を求めるメソッドを追加しなさい. (切片は sum(y)/y.length-reg_a(x,y)*sum(x)/x.length と求まる) |
# 問題18から23のメソッド def sum( x ) end def sum2( x ) end def sum_xy( x , y ) end def sr( x ) end def sr2( x , y ) end def reg_a( x , y ) end # 切片を求めるメソッドを記述しなさい def reg_b( x , y ) end x = [ 7 , 6 , 4 , 2 , 5 ] y = [ 24 , 20 , 14 , 8 ,12 ] a = reg_a( x , y ) b = reg_b( x , y ) printf( "配列xとyを回帰分析した時の傾きは%f\nです" , a ) printf( "配列xとyを回帰分析した時の切片は%f\nです" , b ) |
回答 | |
問題24と同様に,配列xとyの回帰分析(y=ax+b)を行なう場合, 相関係数を求めるメソッドを追加しなさい. (相関係数は sr2(x,y)/Math.sqrt( sr( x ) * sr( y ) ) と求まる) |
def sum( x ) end def sum2( x ) end def sum_xy( x , y ) end def sr( x ) end def sr2( x , y ) end def reg_a( x , y ) end def reg_b( x , y ) end # 相関係数を求めるメソッドを記述しなさい def r( x , y ) end x = [ 7 , 6 , 4 , 2 , 5 ] y = [ 24 , 20 , 14 , 8 ,12 ] a = reg_a( x , y ) b = reg_b( x , y ) c = r( x , y ) printf( "配列xとyを回帰分析した時の傾きは%f\nです" , a ) printf( "配列xとyを回帰分析した時の切片は%f\nです" , b ) printf( "配列xとyを回帰分析した時の相関係数の二乗は%f\nです" , c*c ) |
回答 |