我的参数是否排序?

时间:2016-03-12 13:12:52

标签: c++

我尝试检查我的参数是否已排序。我有代码,但它没有工作......你能告诉我应该修复什么吗?我认为问题出在第一个循环中,因为在参数列表的末尾结果可以是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;
}

2 个答案:

答案 0 :(得分:0)

您需要将result更改为int result;来初始化int result = -1;

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

答案 1 :(得分:0)

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

您可能需要考虑的一个解决方案是假设列表已排序,然后如果遇到的数字不是按排序顺序,则将结果设置为-1并退出循环。