gpt4 book ai didi

c++ - 我的数组收到错误,因为它被定义为单数整数

转载 作者:行者123 更新时间:2023-12-01 14:43:04 24 4
gpt4 key购买 nike

该程序的目的是输出是否对一系列数字(未定义的数字)进行排序(从最大到最小或从最小到最大)。
我已经在函数参数中定义了数组,并且尝试使用for循环将用户输入(只要它大于0)存储在所述数组中。
但是,我收到错误argument of type int is incompatible with parameter of type int*
确切的错误是the argument of type int is incompatible with parameter of type int*
它指的是第22和23行,这两个。isSorted(list[2000]);bool is = isSorted(list[2000]);
我知道这意味着我的for循环通过阅读类似的问题反复向我的变量分配一个值,但是我不知道该如何解决。

#include <iostream>
using namespace std;

bool isSorted(int list[]);

int main()
{
int i;
int list[2000];
int k = 0;
for (i = 0; i < 2000; i++)
{
int j;
while (j > 0)
{
cin >> j;
list[i] = j;
}
}
isSorted(list[2000]);
bool is = isSorted(list[2000]);
if (is == true)
cout << "sorted";
else
cout << "unsorted";

return 0;
}

bool isSorted(int list[])
{
int i = 0;
for (i = 0; i < 2000; i++)
{
if (list[i] > list[i + 1] || list[i] < list[i - 1])
{
return false;
}
else
return true;
}
}

最佳答案

  • 我删除了未使用的变量k
  • 将2000参数化(并设置为5用于测试)。
  • isSorted中,您不允许返回true中的else好像您的第一个元素测试将以其他方式结束,否则您将立即返回true而不测试其他元素。但是,这些后来的元素也可以不排序。
  • isSorted中,不允许将循环作为for(i = 0; i < 2000; i++)运行,因为您在for循环1中添加了i并最终查询了i == 1999 list[2000],它是元素编号2001,而不是在数组内部。相反,这是正确的:for (i = 0; i < 1999; i++)。您也不需要检查两个方向。
  • 您不能调用isSorted(list[2000]),因为这将调用以int而不是int数组作为参数进行排序。
  • 您编写int j而不初始化它,然后在while j > 0之前查询cin << j。这是未定义的行为,尽管极有可能j为零,但不能保证。但是很可能您永远不会进入while循环,也永远不会做cin
  • 我只在示例中检查升序,所以重命名了isSorted。如果您想检查降序,欢迎培训您的编程技巧并自己实现。

  • 这是带有修复程序的代码:
    #include <iostream>
    using namespace std;

    bool isSortedInAscendingOrder(int list[]);

    const int size = 5; // Set this to 2000 again if you want

    int main()
    {
    int i;
    int list[size];
    for (i = 0; i < size; i++)
    {
    int j = 0;
    while(j <= 0)
    {
    cin >> j;
    if(j <= 0)
    cout << "rejected as equal or smaller zero" << endl;
    }
    list[i] = j;
    }
    if (isSortedInAscendingOrder(list))
    cout << "sorted" << endl;
    else
    cout << "unsorted" << endl;

    return 0;
    }

    bool isSortedInAscendingOrder(int list[])
    {
    for (int i = 0; i < size -1; i++)
    {
    if (list[i] > list[i + 1])
    {
    return false;
    }
    }
    return true;
    }

    关于c++ - 我的数组收到错误,因为它被定义为单数整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61265235/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com