練習問題7:
- では、この章の最初で述べたプログラムを書いてみましょう。
- 上のプログラムをsortメソッドなしで 書けますか。プログラミングの大部分は、問題解決にあります。 これはいい練習になります。
- 以前、メソッドの章で書いた 目次を表示するプログラムを修正してみましょう。その際、プログラムの最初で 目次の情報(つまり、章の名前やページ番号など)をすべてひとつの配列にしまいます。 その後、その配列から情報を取り出して美しくフォーマットされた目次を出力します。
7-1.rb
#好きな数だけ単語の入力をしてもらい(1行に1単語、最後はEnterだけの空行)
#アルファベット順に並べ変えて出力するようなプログラムを書いてみましょう
#解答1
words = []
puts '好きな数だけ単語を入力してください'
puts '最後はEnterだけの空行にしてください'
while word = gets.chomp
break if word.empty?
words << word
end
puts '単語をアルファベット順に並べます'
puts words.sort
#解答2
words = []
word =
puts '好きな数だけ単語を入力してください'
puts '最後はEnterだけの空行にしてください'
while word != ""
word = gets.chomp
word << newWord
end
puts '単語をアルファベット順に並べます'
puts words.sort
7-2.rb
#ソートアルゴリズムをバブルソートでやってみるテスト
words = []
puts '好きな数だけ単語を入力してください'
puts '最後はEnterだけの空行にしてください'
while word = gets.chomp
break if word.empty?
words << word
end
#ソートメソッド代わり
repeat = words.length
while repeat != 0
#配列の上と下を比べて交換
num1 = words.length - 1
num2 = num1 - 1
while num1 != 0
#ひっくり返す
if words[num2] > words[num1]
words[num2], words[num1] = words[num1], words[num2]
end
num1 -= 1
num2 -= 1
end
repeat -= 1
end
puts words
7-3.rb
#目次を配列使って並べる
lineWidth = 40
mokuji = ["目 次".center(lineWidth), "1章: 数".ljust(lineWidth/2) + "p. 1".rjust(lineWidth/2), "2章: 文字".ljust(lineWidth/2) + "p. 72".rjust(lineWidth/2), "3章: 変数".ljust(lineWidth/2) + "p. 118".rjust(lineWidth/2)]
puts mokuji