Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用sort函数对并行数组进行排序_C++_Arrays_Sorting - Fatal编程技术网

C++ 使用sort函数对并行数组进行排序

C++ 使用sort函数对并行数组进行排序,c++,arrays,sorting,C++,Arrays,Sorting,我应该写一个排序函数,将每月的降雨量(由用户输入)按升序排序。输出应该是每月输出英寸数的并行数组及其对应的月份。它看起来应该类似于“月降雨量x英寸”。X和(月)是并行阵列的输出。然而,当我输入几英寸的雨时,没有输出 我可能忽略了一些事情,但我觉得可能是一些简单的事情,比如我以错误的顺序调用函数,或者我没有正确输出排序的数组。我尝试过在代码中移动sort和show函数,也尝试过更改措辞,但都没有效果 #include <iostream> #include <string>

我应该写一个排序函数,将每月的降雨量(由用户输入)按升序排序。输出应该是每月输出英寸数的并行数组及其对应的月份。它看起来应该类似于“月降雨量x英寸”。X和(月)是并行阵列的输出。然而,当我输入几英寸的雨时,没有输出

我可能忽略了一些事情,但我觉得可能是一些简单的事情,比如我以错误的顺序调用函数,或者我没有正确输出排序的数组。我尝试过在代码中移动sort和show函数,也尝试过更改措辞,但都没有效果

#include <iostream>
#include <string>
using namespace std;

// Function Prototypes
void getMonthlyRainfall(double[], string[], int);
double getTotal(const double[], int);
int getHighestAmount(const double[], int);
int getLowestAmount(const double[], int);
void dualSort(double[], string[], int);
void swap(double&, double&);
void swap(string&, string&);
void showOrder(const double[], string[], int);

int main()
{
    const int MONTHS = 12;
    string monthNames[MONTHS] = { "January", "February", "March", 
"April", "May", "June", "July", "August", "September", "October", 
"November", "December" };
    double rainfall[MONTHS], // Array
        total,
        average;
    int lowestIndex,
        highestIndex;

    //Get rainfall input from user
    getMonthlyRainfall(rainfall, monthNames, MONTHS);

        // Get the total amount of rain for the year
    total = getTotal(rainfall, MONTHS);

    // Get the average rainfall
    average = total / MONTHS;

    // Get the month with the lowest rainfall
    lowestIndex = getLowestAmount(rainfall, MONTHS);

    // Get the month with the highest rainfall
    highestIndex = getHighestAmount(rainfall, MONTHS);



    cout << "Total rainfall: " << total << endl;
    cout << "Average rainfall: " << average << endl;
    cout << "Least rainfall in: " << monthNames[lowestIndex] << endl;
    cout<< "Most rainfall in: "<< monthNames[highestIndex] << endl;

    // Sort the array.
    dualSort(rainfall, monthNames, MONTHS);

    // Display sorted numbers
    showOrder(rainfall, monthNames, MONTHS);



    system("pause");
    return 0;
}
#包括
#包括
使用名称空间std;
//功能原型
void getMonthlyRainfall(双精度[],字符串[],整数);
双getTotal(constdouble[],int);
int getHighestAmount(constdouble[],int);
int getlowstatount(constdouble[],int);
void dualSort(double[],string[],int);
无效掉期(双倍&,双倍&);
无效交换(字符串&,字符串&);
无效显示顺序(常量双精度[],字符串[],整数);
int main()
{
const int MONTHS=12;
字符串monthNames[月]={“一月”、“二月”、“三月”,
“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”,
“11月”、“12月”};
双降雨量[月],//数组
全部的
平均水平;
int lowestinex,
高指数;
//从用户处获取降雨输入
getMonthlyRainfall(降雨量、月数、月数);
//获取一年的总降雨量
总计=总降雨量(降雨量,月);
//得到平均降雨量
平均数=总数/月;
//获取降雨量最低的月份
Lowestinex=getLowestAmount(降雨量,月);
//获取降雨量最高的月份
highestIndex=getHighestAmount(降雨量,月);

cout您可以将引用配对,然后进行排序,这将对数组进行排序

void dualSort(double rainfall[], string monthNames[], int size)
{
    std::vector<std::pair<double&, std::string&> > tied;
    tied.reserve(size);
    auto tie = [](double & rain, std::string & month){ return std::tie(rain, month); };
    std::transform(rainfall, rainfall + size, monthNames, std::back_inserter(tied), tie);
    std::sort(tied.begin(), tied.end());
}
void dualSort(双降雨[],字符串月数[],整数大小)
{
std::向量相关;
3.储备(规模);
自动绑定=[](双精度&rain,标准::字符串和月份){返回标准::绑定(rain,月份);};
标准::转换(降雨量、降雨量+大小、月份、标准::背面插入器(平直)、平直);
排序(tied.begin(),tied.end());
}

您可以将引用配对,然后进行排序,这将对数组进行排序

void dualSort(double rainfall[], string monthNames[], int size)
{
    std::vector<std::pair<double&, std::string&> > tied;
    tied.reserve(size);
    auto tie = [](double & rain, std::string & month){ return std::tie(rain, month); };
    std::transform(rainfall, rainfall + size, monthNames, std::back_inserter(tied), tie);
    std::sort(tied.begin(), tied.end());
}
void dualSort(双降雨[],字符串月数[],整数大小)
{
std::向量相关;
3.储备(规模);
自动绑定=[](双精度&rain,标准::字符串和月份){返回标准::绑定(rain,月份);};
标准::转换(降雨量、降雨量+大小、月份、标准::背面插入器(平直)、平直);
排序(tied.begin(),tied.end());
}

欢迎使用Stack Overflow!听起来您可能需要学习如何使用调试器来逐步完成代码。有了一个好的调试器,您可以逐行执行程序,并查看程序偏离预期的地方。如果您要进行任何编程,这是一个必不可少的工具。进一步阅读:欢迎使用Stack Overflow。您是否先尝试过更简单的练习,例如对
int
的容器进行排序?您是否计划使用
tempId
?您是否必须使用多个数组?这项工作实际上是为了一个结构的单个数组。您在
monthNames
rainment
之间没有相关性。如果您需要ce
Rainsion
要按月份顺序输入,您可以尝试同时对
monthNames
Rainsion
进行双重排序来折磨自己,但除非这是教育目的的要求,否则这是毫无意义的。任何时候,您都必须在两种不同类型之间进行关联,如
string
double
,您应该自动认为
struct
同时包含
double
string
,然后包含它们的数组,可以在任意成员上进行排序。欢迎使用堆栈溢出!听起来您可能需要学习如何使用调试器逐步完成代码。有了好的调试器,您可以执行您可以逐行查看程序与预期的偏差。这是您进行任何编程的必要工具。进一步阅读:欢迎使用堆栈溢出。您是否先尝试过更简单的练习,例如对
int
容器进行排序?您是否计划使用
tempId
执行某些操作?您是否有使用多个数组?这项工作实际上是为了一个结构的单个数组。你在
monthNames
raining
之间没有相关性。如果你强制
raining
按月份顺序输入,那么你可以尝试对
monthNames
rain进行双重排序来折磨自己平行下降
,但除非这是教育目的的要求,否则这是毫无意义的。任何时候你必须在两种不同类型之间进行关联,如
string
double
,你应该自动地认为
struct
同时包含
double
string
,然后是它们的数组然后可以在任一成员上进行排序。