gpt4 book ai didi

c++ - 努力将在一个函数中创建的数组传递给排序函数

转载 作者:行者123 更新时间:2023-11-27 23:58:19 27 4
gpt4 key购买 nike

我目前正在开展一个项目,我们必须创建一个包含 1000 个元素的数组,然后将其传递给另一个函数以对其进行排序。我在网上看到的所有内容都向您展示了如何将它从 main 传递到另一个函数,而不是相反。

请查看我的代码并帮助我将 Ar[1000]Array() 传递到 ISort 并最终传递给 main

#include <iostream>
#include <time.h>
using namespace std;

void Array()//function to make array
{
int Ar[1000];//creating array
int i = 0;//random variable to be element #
int counter = 0;// counter variable
int randnum;//variable to old random number
srand(time(NULL));//seeding rand with time

while (counter != 1000)
{
randnum = rand();
Ar[i] = randnum;
cout << Ar[i]<<endl;
counter++;
}
}

void ISort(int Ar[1000])//Iterative sort
{
int count = 0;//another counter variable
int count2 = 0;//counter variable # 3 because nested loops
int j=0;//Temp index # similar to i
int temp; //Temp variable to help switch elements
while (count != 1000)
{
if (Ar[count] < Ar[j])
{
temp = Ar[count];
Ar[count] = Ar[j];
Ar[j] = temp;
}
}
}

/*void RSort(int Ar)//Recursive sort
{

}
*/

int main()
{
Array();
ISort();
system("Pause");
return 0;
}

最佳答案

Ar 在你的 Array 函数完成后将被销毁,你需要有一种方法来防止这种情况,一种方法是通过参数传递数组使其成为函数局部变量:

void Array(int* Ar, int count)//function to make array
{

我还将您当前的 ISort 定义更改为:

void ISort(int* Ar, int acount)//Iterative sort

其中 acountAr 中元素的数量。这是因为使用 void ISort(int Ar[1000])void ISort(int* Ar) 没有区别(阅读 here 了解更多信息).如果您想保留数组类型,则必须使用以下方法通过引用传递它:void ISort(int (&Ar)[1000])

main 的最后变化:

   int Ar[1000];//creating array
Array(Ar, 1000);
ISort(Ar, 1000);
system("Pause");
return 0;

工作代码在这里:http://coliru.stacked-crooked.com/a/678f581f802da85b

您还忘记了在排序循环中增加 count

关于c++ - 努力将在一个函数中创建的数组传递给排序函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40942964/

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