我的程序是要求用户输入等式。然后在用户给出的间隔内找到最大值。当我编译我的程序时,我得到的输出是:
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;
}
答案 0 :(得分:2)
不要在if语句中使用system("pause");
,否则您将丢失该错误:
&#34; sh:PAUSE:找不到命令&#34; 。把它放在主要结束之前。
system("pause");
return 0;
答案 1 :(得分:1)
F(x)不应该是整数变量,它应该是一个字符串变量。这样,用户可以输入运算符作为字符而不是编译器认为它们应该是数字。然后,您必须处理字符串以确定等式;这需要一些思考,可能需要更高级的数据结构,如二叉树。
答案 2 :(得分:0)
正如其他人所指出的, f(x)的形式可能是上述代码的问题。
考虑重新设计您的计划要实现的目标。一种可能性是将 f(x)缩小为多项式函数,以便您可以避免解析一般代数方程,在这种情况下,您可以问: 多项式有多少度?此后,在多项式方程中输入每个因子的系数值。
这样,您仍然可以在程序中使用整数(或 double - 更好)。