質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

512閲覧

入力された複数の数値を、ソート(昇順)して表示するプログラムを作成したい

Eston

総合スコア67

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1グッド

1クリップ

投稿2018/02/13 02:46

編集2018/02/13 02:49

入力された複数の数値を、ソート(昇順)して表示するプログラムを作成したい

Ruby 2.3.oで入力された複数の値を、ソートして表示したいと思っています。

下が自分で書いたコードですが、このままだと入力できる数値は3つまでなので、無制限で入力できるようにしたいです。

puts "数値を3つ入力して下さい"

num_1 = gets.chomp
num_2 = gets.chomp
num_3 = gets.chomp

nums = (num_1 + num_2 + num_3)
puts "入力された値は #{nums[0]}, #{nums[1]}, #{nums[2]}"
puts "小さい順に数値を並び替えます"
numss = [num_1, num_2, num_3]
p numss.sort

試したことは、
readlinesを使って、while文で
if num = ”quit"
break
end
のように、quitをタイプしたら、数値の取得を終了して、その後ソートしようと考えているのですが、readlinesの終了の方法がよくわかりません。

ご教授いただけると助かります。

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2018/02/13 03:52

ソートされた結果が欲しいだけなのか、ソートのアルゴリズムを自分で書きたいのか、どちらですか?
Eston

2018/02/13 04:24

ソートのアルゴリズムを自分で書きたいと考えています。
guest

回答2

0

ベストアンサー

普通に1行ずつ配列に入れていけばいいと思いますが
数値を入力して数値順にソートですよね?

rb

1nums = [] 2puts "数値を入力してください(quitで終了)" 3loop{ 4 n = gets.chomp 5 break if n == 'quit' 6 nums << n.to_i 7} 8print '入力された値は' 9puts nums.join ',' 10puts '小さい順に数値を並び替えます' 11p nums.sort

readlinesを使うならばwindowsの場合はctrl+zを入力し改行
unix系の場合はおそらくctrl+d
で終了できます。

投稿2018/02/13 04:16

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Eston

2018/02/13 04:28

なるほど、自分で難しくしていました。よくわかりました。ありがとうございます。
guest

0

rrr.rb

ruby

1require 'readline' 2 3stty_save = `stty -g`.chomp 4trap('INT') { system 'stty', stty_save; exit } 5 6nums = [] 7 8while buf = Readline.readline('> ') 9 nums << buf.chomp.to_i 10end 11 12print '入力された値は' 13puts nums.join ',' 14puts '小さい順に数値を並び替えます' 15p nums.sort

参考情報

  • Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > readlineライブラリ > Readlineモジュール

https://docs.ruby-lang.org/ja/latest/class/Readline.html

...

何も入力していない状態で EOF(UNIX では ^D) を入力するなどで、 ユーザからの入力がない場合は nil を返します。

...

この後にある。
Ctrl-C の注意も読んでください。

...

本メソッドには注意事項があります。 入力待ちの状態で ^C すると ruby インタプリタが終了し、端末状態を復帰しません。 これを回避するための例を2つ挙げます。

...

投稿2018/02/13 15:49

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問