gpt4 book ai didi

c++ - 如何从文本文件中按升序对数据进行排序?

转载 作者:行者123 更新时间:2023-11-28 03:28:12 24 4
gpt4 key购买 nike

我是 C++ 编程的新手,我需要编码方面的帮助,以便将文本文件中的数字按升序排序,这样我就可以取它的中位数,但我不确定该怎么做。

到目前为止,这是我的代码:

//Create a Vector to hold a set of exam scores.Write a program to do the following tasks: 1. Read exam scores into a vector from Scores.txt 
//2. Display scores in rows of five(5) scores.
//3. Calculate average score and display.
//4. Find the median score and display.
//5. Compute the Standard Deviation and display

#include <vector>
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

int main ()
{ const int array_size = 36; // array size
int numbers[array_size]; //array with 36 elements
int count = 0;
int column_count = 5;
ifstream inputfile; //input file into stream object
//open file
inputfile.open("Scores.txt");
//read file
while (count < array_size && inputfile >> numbers[count])
count++;
//close file
inputfile.close();
//display numbers read
for (count = 0; count < array_size; count++) {
cout << numbers[count] << " ";
if ( count % column_count == column_count - 1 ) {
cout << "\n";
}
}

//find the average
double average; //average
double total = 0; //initialize accumulator
cout << "\nAverage:\n";
for (count = 0; count < array_size; count++)
total += numbers[count];
average = total/array_size;
cout << average << " ";
cout << endl;

//find the median
std::sort(numbers.begin(), numbers.end(), std::greater<int>());





system ("pause");

return 0;
}

提前致谢!

最佳答案

您可能从某个地方复制了这一行,但没有理解它的真正含义:

std::sort(numbers.begin(), numbers.end(), std::greater<int>());

由于您使用的是常规数组,因此第一个参数是指向数组第一个位置的指针。第二个参数是指向数组中最后一个元素的指针。第三个参数指示数组应按哪个方向排序(在您的情况下,您想要找到中位数,因此方向无关紧要)。对于长度为 array_size 的名为 numbers 的数组,新的函数调用重写为:

std::sort(&(numbers[0]), &(numbers[array_size]), std::greater<int>());

将数组传递给函数时,它们会自行退化为指针。所以,你不需要使用 &运算符(operator)。函数调用可以简化为:

std::sort(numbers, numbers + array_size, std::greater<int>());

在这种情况下对数据进行排序的目的是找到中位数。无论对数组进行升序还是降序排序,中间元素的平均值都是相同的。如果您进一步使用需要按升序排序的数组,请将第三个参数更改为 std::less<int>() (或完全删除它)。它将导致数组按升序排序。

std::sort(numbers, numbers + array_size);

关于c++ - 如何从文本文件中按升序对数据进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13355447/

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