LoginSignup
7
7

More than 5 years have passed since last update.

【プログラミング入門 - Ruby を使って - 】 練習問題 7 (配列・ソートアルゴリズム)

Last updated at Posted at 2014-05-29

プログラミング入門 - Rubyを使って -

練習問題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
7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7