我的参数是否排序

Are my parameters sorted?

本文关键字:排序 是否 参数 我的      更新时间:2023-10-16

我尝试检查我的参数是否已排序。我有代码,但它不起作用...你能告诉我我应该解决什么吗?我认为问题出在第一个循环中,因为参数列表末尾的结果可以是 0。我不知道我应该如何更改它,我尝试这样做:当atof(argv[i]) <= atof(argv[i + 1])不正确时,程序应该转到下一个循环......这是我的第一个C++计划。

#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;
}
您必须

通过将int result;更改为int result = -1;来初始化result

如果需要,请将-1替换为所需的初始值。

再考虑一下第一个循环。您的逻辑说"如果任何数字小于下一个数字,请将result设置为 0"。因此,如果您有像 5 3 4 2 1 这样的列表,那么当比较 3 和 4 时,result 将设置为 0。由于剩余的数字正在减少,因此result的值在循环的其余部分不会改变。

您可能需要考虑的一种解决方案是假设列表已排序,然后如果遇到未按排序顺序的数字,请将 result 设置为 -1 并脱离循环。