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