これでも治らない場合は,http://www.sodan.ecc.u-tokyo.ac.jp/?page_id=2614も参照してください.
sqrt(det(a,b,c))を別関数にするか,あるいは,ちょっとひねって
sqrt(det(a,b,c))/(2*a)を別関数にするというのが教科書の意図だと思います.ただ,どちらもお勧めというわけではないので,「補助関数には拘らなくても良い.」とスライドには書きました
#イタリア国旗 italia=[[[0,0.6,0],[1,1,1],[1,0,0]],[[0,0.6,0],[1,1,1],[1,0,0]]] isrb(main):028:0> load("./italia.rb") true srb(main):029:0> show(italia) NameError: undefined local variable or method `italia' for main:Object ...
def italia() [[[0,0.6,0],[1,1,1],[1,0,0]],[[0,0.6,0],[1,1,1],[1,0,0]]] endという関数をitalia.rbに入れれば,load後にshow(italia()) で表示できます.
isrb(main):007:0> load("./german.rb") SyntaxError: /home04/3372856225/algo15/german.rb:3: syntax error, unexpected ',' ,[[1,0,0],[1,0,0],[1,0,0],[1,0,0],[1,0,0]] ^元のファイルは、以下の通りです。どこが間違っているか教えてください。
def german () [[[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]] ,[[1,0,0],[1,0,0],[1,0,0],[1,0,0],[1,0,0]] ,[[1,1,0],[1,1,0],[1,1,0],[1,1,0],[1,1,0]]] end
def german () [[[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]], [[1,0,0],[1,0,0],[1,0,0],[1,0,0],[1,0,0]], [[1,1,0],[1,1,0],[1,1,0],[1,1,0],[1,1,0]]] end
def quadratic(a, b, c, x) a*(x-solution1(a, b, c))*(x-solution2(a, b, c)) end
quadratic(17.0,3.0,2.0,1.0)のようにf(x)=0に実数解がない二次式を与えた時に,負の数の平方根を取ろうとしてエラーが発生しているようです.
require 'complex' include(Math)と書いておくと,
irb(main):003:0> sqrt(-1) => (0+1.0i)のように,sqrtも複素数で結果を返すようになります.
ruby vote.rb 選択肢番号のように使います.
def max(x,y) if y < x return x end return y endのように書くこともできる.また,returnを使って値を返すのと,「最後の式の値」で値を返すのを混在して
def max(x,y) if y < x return x end y endと書くこともできる.
def sign(x) if x < 0 -1 elsif 0 < x 1 else 0 end endのように書くことができる.
の画面が出るので,モードを「Ruby」にして,改行コードを「LF(UNIX)」にして,ウィンドウを閉じてください.以降は,ファイル作成のさいに,「ファイル」->「新規」->「Ruby」で作成すると正しい改行コードが設定されているはずです.