2016-07-08 10 views
0

ここでは、log x(y)関数をシミュレートする非常に基本的なプログラムを紹介します。cin関数を使ってC++で数学演算を入力

私は、cin関数で数学演算を入力することが可能かどうかを知りたいと思います。

たとえば、log2(1/8)を計算するには? だから、Y

#include <iostream> 
#include <cmath> 
using namespace std; 

int main() { 
double x(0.0); 
double y(0.0); 

cout << "log" << endl; 
cin >> x; 
cout << "result" << endl; 
cin >> y; 

double loga = log(y)/log(x); 

cout << "log" << x << "(" << y << ") =" << loga << endl; 

cout << loga << "^" << x << "="<< pow(x, loga)<< endl; 

return 0; 
} 

のためのx と1/8のための入力2はありません、cinはそれを行うことはできませんあなたの助け

+1

いいえ、I/O関数は演算を実行しません。文字列として読み込み、解析し、数学を実行する独自の電卓を書く必要があります。 – Barmar

+0

@Barmarのように、あなたはそれを直接行うことはできません。文字列を読み込み、トークン化して解析します。 – Fang

+0

'switch(char_read_from_cin)'はあなたの友人です。 – lorro

答えて

1

をお願いします。式を文字列として読み取って解析し、数値に評価する必要があります。

シンプルなケースでこれを行う方法に関するリソースは、オンラインで簡単に見つけられます。また、あなたに適した強力なライブラリがあります。

1

私は、cin関数で数学演算を入力できるかどうかを知りたいと思います。

それはそれはstd::cinまたはintなどの任意の標準翻訳から覆われていない他のstd::istreamソース、longfloatstd::stringなど

から実現した入力を変換し、あなた自身のパーサーを書くの手段によってのみ可能です

取得した入力を解析し、値と関数呼び出しロジックに変換するロジックを提供する必要があります。

1

cinは、あなたの意図をサポートしていません。ただし、小数点以下の式を文字列で保持し、double値として変換する方法に従うことができます。だから行こう。