C++ 我的参数排序了吗?

C++ 我的参数排序了吗?,c++,C++,我尝试检查我的参数是否已排序。我有代码,但它不工作。。。你能告诉我该修什么吗?我认为问题在第一个循环中,因为在参数列表的末尾,结果可以是0。我不知道该如何更改它,我尝试这样做:当atof(argv[I])时,您必须通过更改int result来初始化result到int结果=-1 如果需要,可以用所需的初始值替换-1。请仔细考虑第一个循环。您的逻辑是“如果任何数字小于下一个数字,请将result设置为0”。因此,如果您有类似5 3 4 2 1的列表,则当比较3和4时,result将设置为0。由于

我尝试检查我的参数是否已排序。我有代码,但它不工作。。。你能告诉我该修什么吗?我认为问题在第一个循环中,因为在参数列表的末尾,结果可以是0。我不知道该如何更改它,我尝试这样做:当
atof(argv[I])时,您必须通过更改
int result来初始化
result
int结果=-1


如果需要,可以用所需的初始值替换
-1

请仔细考虑第一个循环。您的逻辑是“如果任何数字小于下一个数字,请将
result
设置为0”。因此,如果您有类似
5 3 4 2 1
的列表,则当比较3和4时,
result
将设置为0。由于剩余的数字在减少,因此循环剩余部分的
result
值不会改变


您可能要考虑的一个解决方案是假设列表被排序,如果遇到的不是排序顺序的数字,则将结果设置为-1,并在“<代码> ATOF”(Agv[i])时将结果设为循环。< /P>请告诉我们所需的行为。首先假设它们是排序的。所以初始化你的结果变量。然后你只需要检查它们是否被排序。是的,在C++中的堆栈变量没有初始化成一个确定的状态。在分配时,你得到栈上的任何东西。我希望编译器在那个时候生成一个警告。行!好的,我将每个结果都更改为int result,但当我选择类似的参数时,例如:5 5 1程序返回“Bad”。@Cleo您的意思是您将赋值更改为局部变量的声明和初始化,并停止更新

if
语句引用的
结果
#include <iostream>
#include <cstdlib>
#include <cmath>


using namespace std;


int main(int argc, char *argv[])
{

    int result;

    for (int i = 1; i < argc - 1; i++) {
        if (atof(argv[i]) <= atof(argv[i + 1])) {
            result = 0;
        }
    }

    if (result == 0) {
        cout << "Sorted!" << endl;
        system("pause");
    }


    for (int i = 1; i < argc - 1; i++) {
        if (atof(argv[i]) >= atof(argv[i + 1])) {
            result = 2;
        }
    }

    if (result == 2) {
        cout << "Sorted!" << endl;
        system("pause");
    }
    else {
        cout << "Bad." << endl;
        system("pause");
    }

    system("pause");
    return 0;
}