gpt4 book ai didi

c++ - main中如何调用选择排序函数

转载 作者:行者123 更新时间:2023-11-28 05:45:49 25 4
gpt4 key购买 nike

所以问题是在上面的评分程序中添加选择排序功能。程序应该按升序显示成绩列表,我们提供了选择排序功能并且无法更改它,我的问题是如何从主函数中调用它

这是我的代码`

#include <iostream>
using namespace std;

double average(double x[], int n);
double maximum(double x[], int n);
double minimum(double x[], int n);
int nAboveAvg(double x[], int n);
void sort(double x[], int npts);


int main()
{
double grades[50];
int ngrades;

cout<<"How many grades? (max = 50) ";
cin>>ngrades;

//create for loop to get grades from user
for(int i = 0; i<ngrades; i++)
{
cout<<"Enter grade ";
cin>> grades[i];
while(grades[i]< 0 || grades[i] > 100)
{
cout<<"Invalid grade- please enter again"<<endl;
cin>>grades[i];
}
}

//call the functions
double avg = average(grades, ngrades);
double max = maximum(grades, ngrades);
double min = minimum(grades, ngrades);
int nAbove = nAboveAvg(grades, ngrades);

//Calling the sort function
sor = sort(grades, ngrades);
//display results



cout << "Average = " << avg << endl;
cout << "# above average = " << nAbove << endl;
cout<<"Max value is = "<<max<<endl;
cout<<"Min value is = "<<min<<endl;
cout<<"Array sorted "<<sor<<endl;

}

void sort(double x[], int npts)
{
double min_value;
int min_index;
double temp;
for(int i= 0; i<npts - 1; i++)
{
for(int j = i + 1; j<npts; j++)
{
if(x[j] < min_value)
{
min_value = x[i];
min_index = j;
}
}

temp = x[min_index];
x[min_index] = x[i];
x[i] = temp;
}
return;
}

`

最佳答案

我认为您的问题是您希望“排序”函数返回一个值;它没有。

“sort”函数不返回值,因为它是用“void”返回值定义的,因此尝试从变量“sort”中检索任何数据将不起作用(或者无论如何都不应该)。

数组通过引用传递给函数;这意味着一旦函数返回,排序函数中对数组所做的所有更改仍然存在;因此,您应该输出“成绩”数组,而不是不存在的返回值。

编辑:我相信你的问题在于:

cout<<"Array sorted "<<sor<<endl;

尝试这样的事情:

for (int i = 0; i < ngrades; ++i)
{
cout << grades[i] << " ";
}

cout << endl;

编辑 2:另外,更改行:

sor = sort(grades, ngrades);

只是:

sort(grades, ngrades);

编辑 3:事实证明,“排序”功能存在一些问题。第一个也是最糟糕的问题是变量“min_value”在未定义的情况下被使用。

一旦我改变了这个,程序就可以运行,但是“排序”功能不能正常工作。这就引出了第二个问题:变量“min_value”和“min_index”需要为“i”的每次迭代重置。

最后的问题是,在“j”循环中,“min_value”被分配给“x[i]”,而它应该被分配给“x[j]”:

min_value = x[i];
min_index = j;

应该是:

min_value = x[j];
min_index = j;

我修复了该功能并对其进行了测试以确保其正常工作。这是代码。

void sort(double x[], int npts)
{
double min_value;
int min_index;
double temp;

for (int i = 0; i < npts - 1; i++)
{
min_value = x[i];
min_index = i;

for (int j = i + 1; j < npts; j++)
{
if (x[j] < min_value)
{
min_value = x[j];
min_index = j;
}
}

temp = x[min_index];
x[min_index] = x[i];
x[i] = temp;
}

return;
}

关于c++ - main中如何调用选择排序函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36239686/

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