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