配列メソッド>練習4
つづき
好きな数だけ単語の入力をしてもらい(1行に1単語と入力が続き 最後は空行でEnterのみとする)それをアルファベット順に並び替えて出力するようなプログラムを書いてみましょう。
空行でEnterを押した時つねにプログラムが終了するかなどのテストもおこないましょうね。
読んだの
読んでいくつか試行した
Array
逆引きRuby -配列
むずかしめ↓
お気軽Ruby プログラミング入門
お気軽でなかった
参考
このプログラムを自分で書くなら以下の順番で書きます 1. p gets というコードで Enter, foobar などを入力してみる 2. "\n" が入ることがわかるが、これが邪魔なので gets.chomp にする 3. p gets.chomp をループの中に入れる (loop do / end や while true / end) など 4. word = gets.chomp と代入するようにする 5. word が空文字かどうかを調べてループを抜けられるようにする 6. word が空文字じゃないときの処理を書けるように if を書く
もっかい仕様文を整理
- 好きな数だけユーザが好きな単語を入力する >gets.chompでしょうたぶん
- 1行ずつ、1単語出力される >つまり、配列[]=word の代入値を出力 > もしかして:pushか
- Enter(空行)になるまで続く > untilかwhile...end
- while の場合: !=
- Enter(endまで)になったら、アルファベット順にwordを出力
は
シンプルにいこう
alphabets = [] word = gets.chomp until word =='' word.push alphabets alphabets =gets.chomp end puts alphabets.sort
だめ。 pushがおかしい。
moomin:programmingRuby tomomi$ ruby array1.rb hello array1.rb:4: undefined method `push' for "hello":String (NoMethodError)
push例
array = [1, 2, 3] array.push 4 array.push [5, 6] array.push 7, 8 p array # => [1, 2, 3, 4, [5, 6], 7, 8]
Oh, wordはメソッドではない。alphabetsか
に
お?挙動は正しい気がするな。ドヤ顔
alphabets = [] word =gets.chomp until word == '' alphabets.push word word =gets.chomp end if puts alphabets.sort end
一応アルファベット順に並びました
moomin:programmingRuby tomomi$ ruby array1.rb spain italy france sweeden brazil japan denmark doya brazil denmark doya france italy japan spain sweeden
なんか違う気する ifの場所。
休憩…