Rubyプログラミング

問題番号 問題 ヒント 回答
1
整数iを入力した後,整数iの二乗を計算するメソッドを書きなさい.
(整数iを仮引数,整数iの二乗を戻り値とするメソッド)
# 以下にメソッド f を記述しなさい

i = gets.to_i
printf( "%d\n" , f( i ) )
回答
2
問題1で定義したメソッドを用いて,整数1から10までの二乗を求める
プログラムをeachメソッドによって書きなさい.
# 以下にメソッド f を記述しなさい


# eachメソッドを用いて整数1から10の二乗を求めるプログラムを
# 記述しなさい


回答
3
問題2と同様な動作をするプログラムをtimesメソッドを用いて書きなさい.
# 以下にメソッド f を記述しなさい


# timesメソッドを用いて整数1から10の二乗を求めるプログラムを
# 記述しなさい


回答
4
問題2と同様な動作をするプログラムをwhileループを用いて書きなさい.
# 以下にメソッド f を記述しなさい


# whileループを用いて整数1から10の二乗を求めるプログラムを
# 記述しなさい


回答
5
整数iを入力した後,整数iが偶数か奇数かを判定するメソッドを記述しなさい.
# 偶数か奇数かを判定するメソッド check を記述しなさい


i = gets.to_i
check( i )
回答
6
ヒントのようにプログラムを書き換えた場合,問題5と同様な動作が実行
できるように,メソッド check を記述しなさい.
(偶数であれば戻り値として1を,奇数であれば-1を返すメソッドとする)
# メソッド check を記述しなさい


i = gets.to_i
if check( i ) == 1 then
	printf( "%dは偶数です\n" , i )
elsif check( i ) == -1 then
	printf( "%dは奇数です\n" , i )
end
回答
7
整数i(i>1)を入力し,1から整数iまでの合計値を求めるメソッドを記述しなさい.
(整数iを引数とし,1から整数iまでの和を戻り値とするメソッド)
# 合計値を求めるメソッド f を記述しなさい


i = gets.to_i
printf( "1から%dまでの合計値は%dです\n" , i , f( i ) )
回答
8
整数i(i>1)を入力し,1から整数iまでの積を求めるメソッドを記述しなさい.
(整数iを引数とし,1から整数iまでの積を戻り値とするメソッド)
# 積を求めるメソッド f を記述しなさい


i = gets.to_i
printf( "1から%dまでの積は%dです\n" , i , f( i ) )
回答
9
1から整数iまでの合計値を求めるメソッドf(問題7)と偶数か奇数かを
判定するメソッド(問題5)を用いて,整数iを入力した後,1から整数i
までの合計値を求め,さらにその合計値が偶数か奇数かを判定する
プログラムを記述しなさい.
# 合計を求めるメソッド f を記述しなさい


# 偶数か奇数かを判定するメソッド check を記述しなさい


i = gets.to_i
printf( "1から%dまでの合計値は%dです\n" , i , f( i ) )

# 1からiまでの和が偶数か奇数かを判定するため,下記の
# 文を完成しなさい
check(  )
回答
10
1から整数iまでの合計値を求めた後,さらに1から今求めた合計値までの
和を求めるプログラムを,問題7のメソッドを用いて作成しなさい.
# 合計値を求めるメソッド f を記述しなさい


i = gets.to_i
printf( "1から%dまでの合計値は%dです\n" , i , f( i ) )

# 整数1から上記のprintf文で求めた合計値までの和を求めるために,
# 下記のprintf文を完成しなさい
printf( "1から%dまでの合計値は%dです\n" ,  ,  )
回答
11
整数iとjを入力した後,二つの整数の二乗和を求めるメソッド f を記述しなさい
(整数iとjを引数とし,二つの整数の二乗和を戻り値として返す関数)
# メソッド f を記述しなさい.

i = gets.to_i
j = gets.to_i
printf( "iが%d,jが%dの場合,値は%dです\n" , i , j , f( i , j ) )
回答
12
問題11のメソッドを用いて,整数iとjを入力した後,1からi,1からjと値を
それぞれ1ずつ増やしていった場合,メソッドfの値を出力するプログラム
(二重ループ)を記述しなさい.
# メソッド f を記述しなさい


i = gets.to_i
j = gets.to_i

# 1からi,1からjと値を変えた時のメソッド f の値を求めるプログラム
# (二重ループ)を記述しなさい
回答
13
問題12と同様な動作をするメソッドを記述しなさい.
(メソッドの中で,結果を出力するように書き直しなさい)
# メソッド f を記述しなさい


i = gets.to_i
j = gets.to_i
f( i , j )
回答
14
問題12のメソッド f において,それぞれの戻り値を二次元配列x
に格納し,二次元配列xの要素を出力するようにプログラムに
書き直しなさい.
# メソッド f を記述しなさい

i = gets.to_i
j = gets.to_i

x = []
# 二次元配列xにメソッドfの値を代入しなさい



(1..i).each { |a|
    (1..j).each { |b|
	printf( "iが%dでiが%dの場合,値は%dです\n" , a , b , x[ a ][ b ] )
    }
}
回答
15
問題14において,メソッド f の中で各値を二次元配列に格納し,その配列
を戻り値とするようにメソッド f を書き直しなさい.
# メソッド f を記述しなさい


i = gets.to_i
j = gets.to_i

x = f( i , j )
(1..i).each { |a|
    (1..j).each { |b|
	printf( "iが%dでiが%dの場合,値は%dです\n" , a , b , x[ a ][ b ] )
    }
}
回答
16
一次元配列 a = [ 5 , 6 , 2 , 3 , 10 , 7 ] において最大値を求める
メソッドを記述しなさい
# 配列の中で最大値を求めるメソッドを記述しなさい


a = [ 5 , 6 , 2 , 3 , 10 , 7 ]
printf( "最大値は%dです\n" , max( a ) )
回答
17
一次元配列 a = [ 5 , 6 , 2 , 3 , 10 , 7 ] において最小値を求める
メソッドを記述しなさい
# 配列の中で最小値を求めるメソッドを記述しなさい

a = [ 3 , 6 , 2 , 4 , 10 , 7 ]
printf( "最小値は%dです\n" , min( a ) )
回答
18
一次元配列 a = [ 5 , 6 , 2 , 3 , 10 , 7 ] において,最小値,最大値を求め
その結果を要素数が2の配列として返すメソッドを記述しなさい.
(array[ 0 ]に最小値を,array[ 1 ]に最大値を入れ,array を戻り値とする
メソッド)
# 配列の中から最大値,最小値を求め,配列として返すメソッドを記述しなさい


a = [ 3 , 5 , 1 , 4 , 10 , 7 ]
result = min_max( a )
printf( "最小値は%dで,最大値は%dです\n" , result[ 0 ] , result[ 1 ] )
回答
19
配列a = [ 3 , 6 , 2 , 4 , 10 , 7 ]の要素を逆順に入れ換え,
配列として返すメソッドを記述しなさい.
# 配列の要素を逆順に入れ換えるメソッドを書きなさい


a = [ 3 , 6 , 2 , 4 , 10 , 7 ]
b = reverse( a )

b.length.times { |i|
	printf( "%d " , b[ i ] )
}
printf( "\n" );
回答
20
問題19のメソッドを修正し,メソッドの中で引数として渡した配列
の要素に対して,逆順に入れ換える操作を施しなさい.
(戻り値として,配列は返さないで問題19と同様な動作ができるよ
うに修正しなさい)
# 下記のプログラムで問題19と同様な出力がでるように
# メソッド reverse を書き直しなさい


a = [ 3 , 6 , 2 , 4 , 10 , 7 ]
reverse( a )

a.length.times { |i|
	printf( "%d " , a[ i ] )
}
printf( "\n" );
回答
21
配列a = [ 3 , 6 , 2 , 4 , 10 , 7 ]を小さい順(正順列)に
並び変える(ソート)メソッドを記述しなさい.
# 配列をソートするメソッドを記述しなさい


a = [ 3 , 6 , 2 , 4 , 10 , 7 ]
sort( a )

a.length.times { |i|
        printf( "%d " , a[ i ] )
}
printf( "\n" )
回答
22
配列a = [ 3 , 6 , 2 , 4 , 10 , 7 ]を大きい順(逆順列)に
並び変える(ソート)メソッドを記述しなさい.
# 配列をソートするメソッドを記述しなさい


a = [ 3 , 6 , 2 , 4 , 10 , 7 ]
sort( a )

a.length.times { |i|
        printf( "%d " , a[ i ] )
}
printf( "\n" )
回答
23
下記の二つの配列をベクトルととらえ,二つのベクトルの和を
求めるメソッドを記述しなさい
a = [ 3 , 6 , 2 , 4 , 10 , 7 ]
b = [ 5 , 8 , 1 , 0 , 7 , 10 ]
# 二つのベクトルの和を求めるメソッドを記述しなさい

a = [ 3 , 6 , 2 , 4 , 10 , 7 ]
b = [ 5 , 8 , 1 , 0 , 7 , 10 ]

c = add( a , b )

c.length.times { |i|
        printf( "%d " , c[ i ] )
}
printf( "\n" )
回答
24
下記の二つの配列をベクトルととらえ,二つのベクトルの差を
求めるメソッドを記述しなさい
a = [ 3 , 6 , 2 , 4 , 10 , 7 ]
b = [ 5 , 8 , 1 , 0 , 7 , 10 ]
# 二つのベクトルの差を求めるメソッドを記述しなさい

a = [ 3 , 6 , 2 , 4 , 10 , 7 ]
b = [ 5 , 8 , 1 , 0 , 7 , 10 ]

c = add( a , b )

c.length.times { |i|
        printf( "%d " , c[ i ] )
}
printf( "\n" )
回答
25
上記の二つの問題において,二つのベクトルの内積を求めるメソッド
を追加しなさい.そして問題23と24のメソッドを用いて,二つのベク
トルの和と差を求め,それらの内積を求めるプログラムを記述しなさい.
a = [ 3 , 6 , 2 , 4 , 10 , 7 ]
b = [ 5 , 8 , 1 , 0 , 7 , 10 ]
# 二つのベクトルの内積を求めるメソッドを記述しなさい


# 二つのベクトルの和を求めるメソッドを記述しなさい


# 二つのベクトルの差を求めるメソッドを記述しなさい


a = [ 3 , 6 , 2 , 4 , 10 , 7 ]
b = [ 5 , 8 , 1 , 0 , 7 , 10 ]

c = add( a , b )
c.length.times { |i|
        printf( "%d " , c[ i ] )
}
printf( "\n" )

d = sub( a , b )
d.length.times { |i|
        printf( "%d " , d[ i ] )
}
printf( "\n" )

printf( "内積は%dです\n" , multi( c , d ) )
回答