1

私はRubyを初めて使用するので、ユーザーから配列の入力を取得して表示する方法がわかりません。ロジックを追加して最大数を見つけることができることを誰かがクリアできれば。

#!/usr/bin/ruby

puts "Enter the size of the array"
n = gets.chomp.to_i
puts "enter the array elements"
variable1=Array.new(n)

for i in (0..n)
  variable1[i]=gets.chomp.to_i
end

for i in (0..n)
  puts variable1
end  
4

4 に答える 4

6

アレイを1行でキャプチャするのはどうですか?

#!/usr/bin/ruby

puts "Enter a list of numbers"

list = gets   # Input something like "1 2 3 4" or "3, 5, 6, 1"

max = list.split.map(&:to_i).max

puts "The largest number is: #{max}"
于 2012-07-06T06:00:13.473 に答える
3

これはもう少しエレガントなソリューションだと思います。

    puts "Please enter numbers separated by spaces:"
    s = gets

    a = s.split(" ")

    #Displays array
    puts a 

    #Displays max element   
    puts a.max

最初にユーザーから一連の数値を収集し、次に文字列に対してsplitメソッドを使用して、文字列を配列に変換します。"、"など、s.split( "、")と書く以外の区切り文字を使用する場合。その後、ロジックを使用して最大数を見つけるか、maxメソッドを使用することができます。

于 2012-07-07T10:46:16.547 に答える
3

あなたはそれを大丈夫です。しかし、この小さな変更を試してください

#!/usr/bin/ruby

puts "Enter the size of the array"
n = (gets.chomp.to_i - 1)
puts "enter the array elements"
variable1=Array.new(n)

for i in (0..n)
  variable1[i]=gets.chomp.to_i
end

puts variable1

または未定義の値の場合、ここでは1つの方法です

#!/usr/bin/ruby

puts "enter the array elements (type 'done' to get out)"
input = gets.chomp
arr = []
while input != 'done'
  arr << input.to_i
  input = gets.chomp
end

puts arr
于 2012-07-06T06:05:41.260 に答える
1

いくつかのフィードバック:

  • chomp.to_i後者も改行を削除するため、少し冗長です。
  • for x in y慣用的なRubyコードでは一般的に見られません。基本的にeach、わずかに異なるスコープルールのように動作し、おそらくしばらく前に言語から削除されているはずです。
  • Ruby配列は動的であるため、事前に初期化する必要はありません。のようなもの(1..n).map { gets.to_i }も必要な配列を生成します。
  • その後、次のように表示できます。array.each { |n| puts n }

または、前に概説したアプローチを使用するか、 ARGVstripでコマンドライン引数として数値を取得するか、 ARGFを使用してプログラムにパイプすることができます。

于 2012-07-07T11:55:59.657 に答える