【お題】NEW演歌

大学の課題で、1+2*4+sin30
という計算が出来きて、enterを押したあと、+2とかしたら続けて計算でき、qを押すと終了する
プログラムーソースを教えてください。できれば、ここで
何を実行させているのかも教えてください。

お願いします。

A 回答 (5件)

>変数aをつかった計算とは具体的にはどのようになるのですか?



簡単なんだけど
前に紹介したサンプルで説明すると

まず、前の計算結果を保存する変数aを定義して初期化しておきます。

number が数値の文字列を数値に変換している関数で、
このままでは数値や演算子以外は書式エラーになるので、
文字"a"が出てきたら変数aの内容を number の戻り値として
返すように変更します。

main関数は数式の計算結果xを表示してから変数aに代入して、
繰り返すように変更する、"q"が入力されたら、
繰り返しループから抜け出して終了する。

おまけで、sinなどの関数を計算させるなら number の中で
文字列"sin"が出てきたら、後の内容を expression で読み出して(再帰呼び出し)
その値をsin関数で計算して number の戻り値で返すようにすればできます。

ただし、このプログラムは先にも説明したように、
数式の演算子の優先順位を考慮して計算する実用的な物です。

課題の求めている解答とは趣旨が違うかも知れませんよ。
アルゴリズムを理解して説明できないと
自分でやったとは認めてくれないんじゃないかな?
    • good
    • 0

補足です、先にアドバイスしたのは演算子の優先順位を考慮して


計算式 "1+2*4+sin30" を計算するアルゴリズムです。
ここまではできているという話ですか?

>+2とかしたら続けて計算でき、qを押すと終了する
>プログラムーソースを教えてください。

+2というのが単純に数値の+2か、前の計算式に加算するのか区別できませんね。
仕様があいまいです。
符号の+は省略できますが、-2だったらどうします?
数値の-2の入力と、前の計算式に-2するのをどう区別しますか?

私なら前の計算式を保存する変数aを加えて
a-2やa+2などと計算できるようにしますね。
    • good
    • 1
この回答へのお礼

わざわざありがとうございます。
前の計算式に加算するほうです

変数aをつかった計算とは具体的にはどのようになるのですか?

お礼日時:2009/10/21 22:21

はい、これね。


http://www.sra.co.jp/people/miyata/algorithm/
http://www.sra.co.jp/people/miyata/algorithm/eva …

原典は「C言語による最新アルゴリズム事典」
http://oku.edu.mie-u.ac.jp/~okumura/algo/
そのソースリスト
http://www.vector.co.jp/soft/data/prog/se002453. …

基本的に頭から式の要素を処理していくのですが、
途中で括弧とか乗除算など優先される演算子が出てくると、
その中身を先に再帰呼び出しで処理していく感じです。

このソースは四則演算と括弧しかできないけど、
これを応用すれば関数も計算できるようにできます。
    • good
    • 0

C言語を使って関数電卓を(自分で)作りたいのか(人に)作ってほしいのか、どちらなのでしょうか。


タイトルと本文とが矛盾しています。
    • good
    • 3

>大学の課題で


「大学生なら課題くらい自分で考えろ」と言うのがまず最初。

で、C言語はどこまで理解してるの?
    • good
    • 0

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


おすすめ情報