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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- C言語・C++・C# C#の問題です。 文字列型の配列 s[100] にキーボードから入力された100文字以内の文字列(単 2 2022/06/22 15:18
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- その他(プログラミング・Web制作) 単純なコマンドプロンプトが動きません。 2 2022/04/19 15:21
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Excel(エクセル) Excelの関数について 3 2022/11/13 23:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Paiza Cloudです。 どうやれば...
-
Paiza Cloudです。学籍番号と氏...
-
コマンド(例えばls)の出力結果...
-
c言語の質問です。 ランダムに4...
-
ファイル出力の場所を指定
-
テキストファイルに改行コード...
-
Acccess レポートをグループ別...
-
VBA でメモ帳へ保存する際の保...
-
C言語での縦方向のファイル出力...
-
Visual StudioでDOS窓以外に出...
-
シェルコマンドの 2>&1 とはど...
-
ファイル形式またはファイル拡...
-
Base64でエンコードした後の文...
-
fortranのtxtファイル出力書式...
-
サウンド出力のデバイスを選択...
-
二次元配列をクリップボードに...
-
C言語のローカル変数初期化に...
-
pcap形式データをテキストへ抽出
-
pLaTeX の EPSファイル読み込み...
-
MATLABのCSV形式での書き込みに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンド(例えばls)の出力結果...
-
ファイル出力の場所を指定
-
VC++でUTF-8のファイルを出力し...
-
テキストファイルに改行コード...
-
シェルコマンドの 2>&1 とはど...
-
Acccess レポートをグループ別...
-
Wordマクロで指定したフォルダ...
-
二次元配列をクリップボードに...
-
ファイル形式またはファイル拡...
-
CreateProcess関数と実行後の戻...
-
fortranのtxtファイル出力書式...
-
サウンド出力のデバイスを選択...
-
VBA でメモ帳へ保存する際の保...
-
1行ずつではなくまとめてファイ...
-
VBSでEXCEL⇒CSV変換で日付の書...
-
C++ fprintf_sの使い方がわからん
-
ファイルの文字コードをUTF-8に...
-
pLaTeX の EPSファイル読み込み...
-
AccessVBA複数レポート条件毎に...
-
フォルダにあるPDF情報の抽出(VBA)
おすすめ情報