C++ c++;我需要将文件中的数据读取到多维数组中,然后使用一种数据类型对数组进行排序。怎么用?

C++ c++;我需要将文件中的数据读取到多维数组中,然后使用一种数据类型对数组进行排序。怎么用?,c++,arrays,sorting,multidimensional-array,C++,Arrays,Sorting,Multidimensional Array,我需要对员工的净薪酬进行排序,作为工资单计划的一部分。员工通过身份证号码和净工资进行识别。像这样: 11111 456.78 22222 891.01 33333 112.13 我需要对数据进行排序,使其看起来像这样 22222 891.01 11111 456.78 33333 112.13 所以基本上我需要按他们的工资对他们进行排序,但我需要id号来匹配排序后的工资 到目前为止,我掌握的代码是: #include <iostream> #include <fstream

我需要对员工的净薪酬进行排序,作为工资单计划的一部分。员工通过身份证号码和净工资进行识别。像这样:

11111 456.78
22222 891.01
33333 112.13
我需要对数据进行排序,使其看起来像这样

22222 891.01
11111 456.78
33333 112.13
所以基本上我需要按他们的工资对他们进行排序,但我需要id号来匹配排序后的工资

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

#include <iostream>
#include <fstream>
#include <iomanip>
#include <algorithm>

using namespace std;

/* Read data from file into array*/
int readData(long int[], double[], int);

/*print data from array unsorted*/
void printUnsorted(long int[], double, int);

/* sort items from array*/
void sort(long int[], double[], int);

/*Display sorted data to console*/
void printSorted(long int[], double, int);

void main() {

    const int MAXSIZE = 100;

    int n;
    long int id[MAXSIZE];
    double netpay[MAXSIZE];

    n = readData(id, netpay, MAXSIZE);
    printUnsorted(id, netpay);
    sort(id, netpay);
    printSorted(id, netpay);
}

int readData(long int id[], double netpay[], int n) {
    ifstream input;
    input.open("netpay.txt");
    n = 0;

    while (input >> id[n] >> netpay[n]) n++;

    input.close();
    return n;
}

void printUnsorted(long int id[], double netpay[], int n) {
    cout << "Unsorted Data" << endl;
    for (int i = 0; i < n; i++) {
        cout << id[i] << "\t" << netpay[i] << "\t" << endl;
    }


void sort(long int id[], double netpay[], int n) {
    for (int i = 0; i < n; i++) {
        sort(netpay.begin(), netpay.end()); 
    }   
}

void printSorted(long int id[], double netpay[], int n) {
    cout << "Sorted Data" << endl;
    for (int i = 0; i < n; i++) {
        cout << id[i] << "\t" << netpay[i] << "\t" << endl;
    }   
}
#包括
#包括
#包括
#包括
使用名称空间std;
/*将数据从文件读入数组*/
int readData(长整型[],双整型[],整型);
/*从未排序的数组打印数据*/
无效打印未排序(长整数[],双精度,整数);
/*对数组中的项目进行排序*/
无效排序(长整型[],双整型[],整型);
/*将排序后的数据显示到控制台*/
无效打印排序(长整数[],双精度,整数);
void main(){
常数int MAXSIZE=100;
int n;
长整型id[MAXSIZE];
双倍网付[MAXSIZE];
n=读取数据(id、netpay、MAXSIZE);
打印未排序(id,网银);
排序(id、网付);
打印分类(id,网银);
}
int readData(长int id[],双倍网付[],int n){
ifstream输入;
input.open(“netpay.txt”);
n=0;
而(输入>>id[n]>>netpay[n])n++;
input.close();
返回n;
}
无效打印未排序(长整数id[],双倍净付[],整数n){

cout您的代码中有很多需要改进的地方。您也有一些语法错误。我建议您先调试代码。但是,排序部分可以按如下方式进行。首先,从数据(id、netpay)中进行配对。然后,将对保存在容器中,如
std::vector。
接下来,使用
std::sort
对其第二个元素netpays进行排序。最后,将对中的数据写回
id
netpay
数组

void my_sort(int id[], double netpay[], int n) {
    typedef std::pair<int, double> data_pair_t;
    std::vector<data_pair_t> data;

    for (int i = 0; i < n; i++) {
        data.push_back(make_pair(id[i], netpay[i]));
    }

    sort(data.begin(), data.end(), [](data_pair_t a, data_pair_t b) {
        return a.second < b.second;
        } );  

    for(int i = 0; i < n; i++) {
        id[i] = data[i].first;
        netpay[i] = data[i].second;
    }
}
void my_排序(整数id[],双倍网银[],整数n){
typedef std::pair data\u pair\t;
std::矢量数据;
对于(int i=0;i

您可以检查代码并在进行过程中对其进行扩展。当然,如果您使用
std::vector
而不是数组和特定的数据结构作为输入数据,那么事情可以简化。

您的代码中有许多需要改进的地方。您也有一些语法错误。我建议您首先尝试调试代码。但是,排序部分操作如下。首先,从数据(id,netpay)中创建对。然后,将对保存在容器中,如
std::vector。
接下来,使用
std::sort
对对第二个元素netpays进行排序。最后,将对中的数据写回
id
netpay
数组

void my_sort(int id[], double netpay[], int n) {
    typedef std::pair<int, double> data_pair_t;
    std::vector<data_pair_t> data;

    for (int i = 0; i < n; i++) {
        data.push_back(make_pair(id[i], netpay[i]));
    }

    sort(data.begin(), data.end(), [](data_pair_t a, data_pair_t b) {
        return a.second < b.second;
        } );  

    for(int i = 0; i < n; i++) {
        id[i] = data[i].first;
        netpay[i] = data[i].second;
    }
}
void my_排序(整数id[],双倍网银[],整数n){
typedef std::pair data\u pair\t;
std::矢量数据;
对于(int i=0;i

您可以检查代码并在进行过程中对其进行扩展。当然,如果您使用
std::vector
而不是数组和特定的数据结构作为输入数据,事情可以简化。

感谢您的及时响应!我将详细介绍您的代码示例。我真的希望我可以在本作业中使用vectors我们是不允许的。尽管如此,这还是一个很大的帮助。谢谢!谢谢你的及时回复!我会处理你的代码示例。我真的很希望我能在这个任务中使用向量。不幸的是,我们是不允许的。尽管如此,这是一个很大的帮助,谢谢!