C++ 嵌套循环以查找最大值

C++ 嵌套循环以查找最大值,c++,nested,max,C++,Nested,Max,我正在编写一个程序,在用户给定的时间间隔内求方程的最大值。当我编译代码而不是输出最大值时 请输入要检查的间隔的第一个数字: 请输入要检查的间隔的最后一个数字: 请输入所需的初始步长: sh:PAUSE:未找到命令 我认为问题与我的循环有关,但我不确定如何纠正这种情况。 这是我的密码 #include <iostream> #include <cmath> using namespace std; int main() { int a, b, delta, x,

我正在编写一个程序,在用户给定的时间间隔内求方程的最大值。当我编译代码而不是输出最大值时

请输入要检查的间隔的第一个数字: 请输入要检查的间隔的最后一个数字: 请输入所需的初始步长: sh:PAUSE:未找到命令

我认为问题与我的循环有关,但我不确定如何纠正这种情况。 这是我的密码

#include <iostream>
#include <cmath>

using namespace std;

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


    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 = pow(x, 2)-7*x-18;
        if (y > max)
        {
            max = y;
            cout <<"The maximum over the interval from " << a <<" to " << b <<" is " << max;
        }
        else
        {
            delta= delta/2;
        }
        if (delta <  pow( 10, -6))
        {
            break;
        }
    }      

    return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
int a,b,delta,x,y;
int max=0;

cout看看你的代码,delta的值应该是浮点值,因为你递归地将它除以2。你的pow(10,-2)在这方面没有做任何有用的比较。即使做了所有事情,它也不会抛出暂停错误。我在VS 12(C++11)上运行了它

为什么你需要使用系统停顿?我想它不是真的必要。我会去掉它。这对我的循环错误是没有帮助的。你能解释一下你的问题是什么吗?只要移动max的循环外……你应该考虑改变你的算法,因为我看到一些数学上的缺陷。函数可能是完全负的,并且永远无法达到的0将是最大值。(通过将第一个y值设置为等于最大值,可以很容易地解决此问题)另一种是,二次函数是x^ 2-4x+5,间隔为0到10,步长为1。最大值明显出现在10,但是你的程序检测到x=0,y=5。它的新的最大值和δ减半,x接近但从不达到1,所有y值都小于5。方程式