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

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

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

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

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

981閲覧

Runtime error が出てしまう。

kohei_04

総合スコア12

Ruby

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

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2021/10/31 07:23

rubyの基礎問題に取り組んでいりのですが、実行をすると"Runtime error"がでてしまいます。

##問題
イメージ説明
を満たす時は"yes"を表示以外は"no"と表記する

与えられる値は下記のかたちで与えられる

xc yc r_1 r_2 n           #値を与えられる回数 x_1 y_1 x_2 y_2 ... x_n y_n

与えられる入力例

0 0 1 2 3 0 0 1 1 4 2

自分の記述

ruby

1stome = gets.split(" ").map(&:to_i) 2people = gets.chomp.to_i 3 4people.times do 5 person = gets.split(" ").map(&:to_i) 6 7 if (stome[2].to_i ** 2) <= (person[0].to_i - stome[0].to_i) ** 2 + (person[1].to_i - stome[1].to_i) ** 2<= (stome[3].to_i ** 2 ) 8 puts "yes" 9 else 10 puts "no" 11 end 12end

## 実行結果ステータス/エラー文
実行結果ステータス

Runtime error
Main.rb:7:in `block in <main>': undefined method `<=' for false:FalseClass (NoMethodError) Did you mean? <=> from Main.rb:4:in `times' from Main.rb:4:in `<main>'

コードの出力

0 0

## 自分でやったこと
様々な場所に"puts"を記述してどのような値を受け取っていることを確認しました。
"stome","people","person"の値を受け取ることはできています。
ですが
・"people = 3"になっているはずなのに3回の繰り返しができていない
・ifの条件もしっかり定義できていないのか"yes","no"の表示すらされていない。
です。

お手数おかけしますが、
ご教授頂けますと幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

if の条件が a <= b <= c という形になっています。これは (a <= b ) <= c という解釈でじっこうされますので、 a > b の場合に nil <= c になり掲示のエラーとなります。
a <= b and b <= c という形にしてください。

if の所が複雑になるので、私でしたら
def in_the_ring?(xc, yc, r_1, r_2) とmethodを作って
if in_the_ring?(*stome) とします。

投稿2021/10/31 08:11

winterboum

総合スコア23416

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

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

kohei_04

2021/10/31 13:17

ご回答ありがとうございます!! とりあえず提示された式を記述することのに目が行き過ぎていて、比較演算子をが同処理されるのか全く考えられていなかったです・・・ ちなみに提案頂いたメソッドのときの(*stome)のアスタリスクは何故あるのでしょうか??
winterboum

2021/10/31 13:34

*Array はArrayを展開ます。methodが配列ではなく個別の変数になっているので、展開して渡します。
kohei_04

2021/11/01 00:59

なるほど!! ご丁寧に補足情報まで解説ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問