Maximaというソフトがあります。Windows上のコンソール版に限定しての話です。
これは数式を処理するソフトですが、こちらの入力に瑕疵があると質問してきます。
例えば、
変数aはゼロかゼロではないのか
です(実際は英語)。
この質問が無い場合は、バッチファイル処理が可能です。
しかし質問が発生した場合はバッチファイルが終了しません。または期待しない動作をします。
CScript.exeを試しましたが、ネット上では次の処理のサンプルがありませんでした。
なお、以下はJavascript風の架空の言語と架空の環境です。
a = run("maxima.exe"); // Maximaを起動。プロセスの入出力をaをハンドルにして制御できる、とする
a.stdin = "y=x/a;"; // Maximaに"y=x/a;"をキー入力したように振る舞う、とする
var s = a.stdout(); // Maximaが"y=x/a;"を受け入れた後、出力した文字列がsに入る、とする
if (s == "変数aはゼロかゼロではないのか")
a.exit(); // プロセスを強制終了する、とする
print(s); // 出力
a.stdin = "solve(%,x);"; // Maximaに"solve(%,x);"をキー入力したように振る舞う、とする
var s = a.stdout(); // 略
if (s == "何かのエラーメッセージ")
a.exit(); // 略
print(s); // 略
...
可能でしょうか。
スクリプトではなく、CやC++を使うと可能でしょうか。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
No.2
- 回答日時:
うーんと、これだと違うんですかね。
Maximaだとコマンドプロンプトで -bと言うオプションを付ければファイルを読み込んで計算結果を返した後、自動で閉じます。
例えば、上のコードに従うと、次のようなファイル(test.bat)を作成します。
rem test.bat
eq: y=x/a;
solve(eq, x);
rem ここまで
んで、コマンドプロンプトから次のように打ちます。
maxima -b test.bat --very-quiet
そうすれば、コマンドプロンプトでmaximaが起動してそして処理が終わったら終了します。
➜ ~ maxima -b test.bat --very-quiet
batch("test.bat")
read and interpret file: #p/home/cametan/test.bat
eq:y = x/a
x
y = -
a
solve(eq,x)
[x = a y]
test.bat
➜ ~
外していたらごめんなさい。
返答ありがとうございます
例えば
solve(y=sqrt(x),x);
を解こうとすると、Maximaはxの正負または0を聞いてきます。
最初からassume()してれば問題はないのですが、バッチファイルでも
聞いてくるので、標準出力を単に待っていると終了しません。
--very-quietオプションは知りませんでしたが、付けても同じでした。
ですから、標準出力を監視して、もしMaximaが質問して来たら処理を中断しようと考えたのですが、
どうやら難しいようです。
No.3
- 回答日時:
> バッチファイルでも聞いてくるので、標準出力を単に待っていると終了しません。
あー、つまりこういう事なのかな。
;; test.bat
eq: y = sqrt(x);
solve(eq, x);
No.4
- 回答日時:
だからひょっとしたら、
> 標準出力を単に待っていると終了しません。
と言うのは、Maximaが「入力を促していて、入力待ち」なのかもしれないですねぇ。
さっきの写真の例でも、例示の通りに打つと、
Is y positive, negative, or zero?
と訊かれて「待機状態」に入ります。
待機状態、って事は「プロンプトから入力してくれ」、って状態になってるわけですが、ここで例えば
positive
って打っちゃってもうんともすんとも言いません。
っつーのが何故か、と言うと、端末はその時点でMaximaに支配されてるから、ですよね。
つまりMaximaの文法じゃないといけない。
正解は
positive;
と行末にセミコロン付けないと「続きをやってくれない」わけですよね。
違うかしら?
返答ありがとうございます
assume(x>0)
等と変数の範囲や属性を最初から適切に指定していればMaxima側か質問してこないのですが、質問時にはバッチファイルが終了しません。
こちらに不備があるのは分かりますが、その時にエラーであっても不備であってもバッチファイルを終了させたいです。
質問していることをバッチファイル実行側が判断できればいいのですが、私では実現できなかったです。
No.5
- 回答日時:
> 質問時にはバッチファイルが終了しません。
うん?
さっきの例だと「バッチファイルの終了させ方」を書いたつもりなんですが・・・。
つまり、プロンプトで「入力待ち」が出て、要するに、
positive;
negative;
zero;
と端末に打つのがメンド臭いんで、「強制的に終了させたい」って事なんですかね?
趣旨が違ってきてますが、Maximaに終了してほしいです。
強制の有無は問いません。
もしくは、Maximaが質問をして来たらMaximaを自動的に終了させるような仕組みがほしいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定の列・行をテキストファイ...
-
raw形式からbmp形式への書き込...
-
Acccess レポートをグループ別...
-
コマンド(例えばls)の出力結果...
-
AccessVBA複数レポート条件毎に...
-
VC++でUTF-8のファイルを出力し...
-
サウンド出力のデバイスを選択...
-
Wordマクロで指定したフォルダ...
-
pcap形式データをテキストへ抽出
-
OCRで起こしたテキスト文字をCS...
-
Excel2007でのエクスポート
-
ガウシアンでSCFする前の結...
-
I/Oエラー(Delphi)
-
外国語とCSVについて
-
100行単位のエクセルデータをテ...
-
Excel のページを Jpegファイル...
-
BitBltについて。
-
ファイル出力の場所を指定
-
CreateProcess関数と実行後の戻...
-
ビデオCDの制作方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【ExcelVBA】UTF-8(BOM無)でC...
-
コマンド(例えばls)の出力結果...
-
Acccess レポートをグループ別...
-
ファイル出力の場所を指定
-
VC++でUTF-8のファイルを出力し...
-
ファイルの文字コードをUTF-8に...
-
CreateProcess関数と実行後の戻...
-
VBA でメモ帳へ保存する際の保...
-
テキストファイルに改行コード...
-
シェルコマンドの 2>&1 とはど...
-
外国語とCSVについて
-
ファイル形式またはファイル拡...
-
AccessVBA複数レポート条件毎に...
-
printfだと出力されるのにfprin...
-
1行ずつではなくまとめてファイ...
-
pcap形式データをテキストへ抽出
-
C言語のプログラムが異常終了し...
-
Wordマクロで指定したフォルダ...
-
CBool関数について VB6とVB.net...
-
C言語での印刷方法
おすすめ情報