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我们是不允许的。尽管如此,这还是一个很大的帮助。谢谢!谢谢你的及时回复!我会处理你的代码示例。我真的很希望我能在这个任务中使用向量。不幸的是,我们是不允许的。尽管如此,这是一个很大的帮助,谢谢!