c ++如何评估用户输入公式

时间:2014-05-14 01:19:11

标签: c++ user-input

我的程序是要求用户输入等式。然后在用户给出的间隔内找到最大值。当我编译我的程序时,我得到的输出是:

Please complete the equation to be evaluated f(x)= 
Please enter the first number of the interval to be checked: 
Please enter the last number of the interval to be checked: 
Please enter the desired initial step size: 
sh: PAUSE: command not found

最后一行重复多次。 我认为这里的问题与用户输入要测试的等式有关。但是,我不确定如何解决这个问题。

这是我的代码

#include <iostream>
#include <cmath>
#include <cstdlib>

using namespace std;

int main()
{
    int a, b, delta, fx, x, y;
    int max = 0;

    cout <<"Please complete the equation to be evaluated f(x)= " << endl;
    cin >> fx;
    cout <<"Please enter the first number of the interval to be checked: " << endl;
    cin >> a;
    cout << "Please enter the last number of the interval to be checked: " << endl;
    cin >> b;
    cout << "Please enter the desired initial step size: " << endl;
    cin >> delta;

    for(x = a; x <= b; x = x+delta)                                
    {
        y = fx;     
        if (y > max)  
        { 
            max = y;  
            cout <<"The maximum over the interval from " << a <<"to " << b <<"is " << delta;
        }
        else
        {
            delta= delta/2;
        }
        if (delta <  pow( 10, -6))
        {
            system ("PAUSE");
        }
    }      

    return 0;
}

3 个答案:

答案 0 :(得分:2)

不要在if语句中使用system("pause");,否则您将丢失该错误: &#34; sh:PAUSE:找不到命令&#34; 。把它放在主要结束之前。

system("pause");
return 0;

答案 1 :(得分:1)

F(x)不应该是整数变量,它应该是一个字符串变量。这样,用户可以输入运算符作为字符而不是编译器认为它们应该是数字。然后,您必须处理字符串以确定等式;这需要一些思考,可能需要更高级的数据结构,如二叉树。

答案 2 :(得分:0)

正如其他人所指出的, f(x)的形式可能是上述代码的问题。

考虑重新设计您的计划要实现的目标。一种可能性是将 f(x)缩小为多项式函数,以便您可以避免解析一般代数方程,在这种情况下,您可以问: 多项式有多少度?此后,在多项式方程中输入每个因子的系数值。

这样,您仍然可以在程序中使用整数(或 double - 更好)。