プロが教えるわが家の防犯対策術!

プログラムで入力した数値を変更したい場合はどのようにすればよいのでしょうか?
初めまして。現在Scilabを用いてプログラムを書いているのですが、入力変数が多いために、入力ミスをしたときに修正するプログラムを書こうとしています。たとえば、
for x=1:100
y(x)=input('y=');disp(y);
end;
という、100個変数を入力する場合を考えているのですが、変数を入力し間違えた場合に、最初からやり直すのは面倒なので、これを補うプログラムを考えてほしいのです><;
入力変数は毎回ことなるので、どこかに保存ということもできず・・・。入力をし間違えた場合にループを一つ戻るようにするにはどのようにすればよいのでしょうか?

A 回答 (2件)

今までScilabを使ったことがなく作法など知りませんので参考と思ってください。



こういうので用は足せるかと思います。
・ループのカウントはforに任せず自前で行う。
・入力は一旦文字列で行う。
・入力がeだったらループ終了。
・入力がdだったらひとつまえのループに戻る。
・入力が数字だったら文字列を数値に変換して配列に値を入れて次のループへ。
・入力が上記以外だったら今のループを維持。

なぜeで終わりみたいなふうにするかというと、こうしておけば例えば入力する数値が100個だったとして、100個目を入れそこなった時でも修正できるからです。

y=[];
x=1;
while %t
in=input('y('+string(x)+')=','string');
if in <> ''
select in
case 'e'
break;
case 'd'
if x>1
x=x-1;
end
else
ierr=execstr('num=eval(in)','errcatch');
if ierr == 0
y(x)=num;
x=x+1;
end
end
end
end
disp(y);
    • good
    • 0
この回答へのお礼

なるほど。この考えは思いつきませんでした。
たしかにこれなら、入力を失敗しても一つ前に戻ることができますね。
親切な回答ありがとうございました。

お礼日時:2010/09/07 10:52

入力を後から編集できるようにする、ということは、テキストエディタのような機能を追加する、ということです。


大分、面倒だと思います。

テキストファイルから入力するようにするのが、簡単だと思います。
入力は、普段お使いのテキストエディタなり、Excelなりでできます。
データを確認できたら保存して、そのプログラムから読みこませます。

Scilabは使ったことないので詳しくは解りませんが、ファイルから入力する方法があるはずです。
あるいは、その例にあるプログラムに < でリダイレクトして入力することができるかもしれません。
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございます。返信が遅くなり申し訳ありません。
たしかに、テキストファイルから読み込むほうが、間違いが修正できて、変数が変更になった場合に便利かもしれませんね。
さっそく試してみます。
ご回答ありがとうございました。

お礼日時:2010/09/07 10:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!