• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Rubyプログラミングの課題について☆)

Rubyプログラミングの課題について

このQ&Aのポイント
  • 大学のレポートで出た課題に取り組んでいますが、うまく動作しません。
  • プログラムを自分で作成しましたが、全く反応がありません。
  • 留年の危険性があるため、助言が欲しいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>私のプログラムのダメなとこ どこから手を付けていいのかよくわからない(添削したら、ほとんど変わってしまうので)ですが、 気の付いた所を書いておきます。 まず、 ・このスクリプトがエラー無しには通りません。 / =~ op とか s=6 #終了状態 とか すくなくとも、エラーがでないものをアップしましょう。(実行できているということなので、多分違うものなのでしょう) ・コマンドの引数になっているから"op[n1,n2,n3]"はStringなのに、Array Classでメソッド定義をしている。 "*[-1,25,4]".list_ope などとしたら、当然エラーになるはず(無反応のはずがないと思う、ここでも多分、何かが違う) ・-0とか0始まりの数字が通ってしまう(まあ、いいけど)、-,みたいなのが通ってしまう(状態変移する) ・クラスがStringだとしたら、String#eachは、一文字を取り出さない。

maki04_05
質問者

お礼

・・・何から何までありがとうございました。BLUEPIXYさんに教えていただいたことをちょっと工夫したらすぐ実行できました!感謝感謝です。。単位取れそうです

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>"2+5"と返ってきました。計算まではどうやればいいのでしょうか 変ですね でも、そこまで来たらevalするだけなのですが… ひょっとしてevalが使えないのでしょうか? ついでにまた別のやり方 exp=ARGV[0] op=exp[0,1] list=exp[1 .. exp.length] a=eval(list) case op when "+" result=0 a.each{|x| result+=x } when "-" result=a[0] a[1 .. a.length].each{|x|result-=x } when "*" result=1 a.each{|x| result*=x } when "/" result=a[0] a[1 .. a.length].each{|x|result/=x } end print result, "\n"

maki04_05
質問者

お礼

ありがとうございました。確かにできました! 感謝です・・・!!(>v<)

maki04_05
質問者

補足

そして、、引き続き私のプログラムのダメなとこ教えていただける方、、お願いしますm(_ _)m

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

exp=ARGV[0] op=exp[0,1] len=exp.length list=exp[1 .. len].delete!("[]").gsub!(",",op) print eval(list), "\n" とかは、ダメなんでしょうか?

maki04_05
質問者

お礼

ありがとうございました(*^^*)実行してみたのですが、例えば"+[2,5]"に対して"2+5"と返ってきました。計算まではどうやればいいのでしょうか。あと、私のプログラムは先生いわく「動きそうにもないプログラム」らしいので(笑)どこがダメなのかどなたか教えて下さい(なさけない・・)お願いします・・

関連するQ&A

専門家に質問してみよう