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

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

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

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

Q&A

解決済

2回答

274閲覧

【Ruby】arrayを使って順位を数字ではなく日本語で表記させたい

kazuki0714

総合スコア28

Ruby

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

1グッド

2クリップ

投稿2019/07/31 11:42

編集2019/07/31 11:46

レースをして順位を車体の名前で表記させたいです。

下記スクショのようにmain.rbで順位が数字が「1,5,10」(レースにかかった時間)で表示されるのですが
車体名で「フェラーリ、日産、ホンダ」と表示させたいのですが array の中を変える必要があるでしょうか?
それとも違う方法でしょうか?

アドバイスよろしくお願いいたします。

イメージ説明

main.rb

1# main.rb 2require_relative 'car' 3require_relative 'ferrari' 4require_relative 'honda' 5require_relative 'nissan' 6 7puts '-----ホンダ----' 8honda = Honda.new 9honda.output_information(honda) 10 11puts '-----ニッサン----' 12nissan = Nissan.new 13nissan.output_information(nissan) 14 15puts '-----フェラーリ----' 16ferrari = Ferrari.new 17ferrari.output_information(ferrari) 18 19puts "走行時間(ホンダ):#{honda.time}秒" # =>10 20puts "走行時間(日産):#{nissan.time}秒" # => 5 21puts "走行時間(フェラーリ):#{ferrari.time}秒" # => 1 22 23puts '-----順位-------' 24arr = [honda.time,nissan.time,ferrari.time] 25 26puts arr.sort! 27 28# => 1, 5, 10 の順番に表示される。これをフェラーリ、日産、ホンダの順に表示させたい。 29

Ruby

1class Car 2 attr_accessor :type, :capacity, :price, :speed, :height, :passenger, :distance 3 4 def equipment 5 %w[アクセル ブレーキ] 6 end 7 8 def output_information(car) 9 puts "車種: #{car.type}" 10 puts "定員: #{car.capacity}" 11 puts "価格: #{car.price}万円" 12 puts "時速: #{car.speed}km" 13 puts "車高: #{car.height}cm" 14 puts "装備: #{car.equipment.join(', ')}" 15 end 16 17 def time 18 self.distance = 100 19 self.distance /= @speed 20 end 21 22end 23

Ruby

1# ferrari.rb 2class Ferrari < Car 3 def initialize 4 @type = 'フェラーリ' 5 @capacity = 2 6 @price = 2_000 7 @speed = 100 8 @height = 100 9 @passenger = 1 10 end 11end 12 13# honda.rb 14class Honda < Car 15 def initialize 16 @type = 'ホンダ' 17 @capacity = 8 18 @price = 100 19 @speed = 10 20 @height = 100 21 @passenger = 1 22 end 23end 24 25# nissan.rb 26class Nissan < Car 27 def initialize 28 @type = 'ニッサン' 29 @capacity = 5 30 @price = 50 31 @speed = 20 32 @height = 100 33 @passenger = 1 34 end 35end
DrqYuto👍を押しています

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

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

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

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

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

guest

回答2

0

puts [['ホンダ', 10], ['日産', 5], ['フェラーリ', 1]].sort_by(&:last).map(&:first)

投稿2019/07/31 12:14

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kazuki0714

2019/08/01 11:54

ありがとうございます! 表示できました!
guest

0

ベストアンサー

前にも書きましたが、なんかこう、オブジェクト指向的じゃ無いですね。オブジェクト指向の練習かと思っていたのですが、違うんですかね。

とりあえず、

Ruby

1arr = [honda,nissan,ferrari] 2puts arr.sort_by{|x| x.time}.map(&:type)

投稿2019/07/31 12:13

otn

総合スコア84423

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

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

kazuki0714

2019/08/01 11:54

ありがとうございます! チューターにもそれ指摘されたのでオブジェクト指向に沿ったコードに書き換えます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問