gpt4 book ai didi

C++ 对两个成对整数数组的 "percentage"进行排序

转载 作者:行者123 更新时间:2023-11-27 22:55:19 27 4
gpt4 key购买 nike

我有一个包含 2 个“配对”整数数组 newNumerator[ ] 和 newDenominator[ ] 的程序,它们都有 9 个整数。我编写了一个按升序对它们进行排序的函数,但是我不确定它是否有效,因为我还没有成功编译它。我在类型转换方面也遇到了一些问题。这是函数定义-

void sortData(int *newNumerator[], int *newDenominator[], int newSize)
{
int temp1;
int temp2;
bool swap;
int count = 0;
double percentageLeft = 100.0 * static_cast<double>(newNumerator[count]) / newDenominator[count];
double percentageRight = 100.0 * static_cast<double>(newNumerator[count + 1]) / newDenominator[count + 1];

do
{ swap = false;
for(count = 0; count < (newSize - 1); count++)
{
if(percentageLeft > percentageRight)
{
temp1 = *newNumerator[count];
*newNumerator[count] = *newNumerator[count + 1];
*newNumerator[count + 1] = temp1;

temp2 = *newDenominator[count];
*newDenominator[count] = *newDenominator[count + 1];
*newDenominator[count + 1] = temp2;

swap = true;
}
}
} while (swap);
}

我遇到的类型转换问题是 percentageLeft 和 percentageRight,因为 newNumerator[ ] 和 newDenominator[ ] 是整数指针,但要获得它们的“百分比”,我需要它是一个 double 值。不知道该怎么做。基本上我只需要弄清楚如何解决这个问题,并且还知道我的功能是否达到了目的。感谢任何帮助,如果有什么我可以进一步澄清的,请告诉我

最佳答案

我建议使用STL 进行排序。让事情变得更简单、更容易理解。

#include <vector>
#include <algorithm>

struct Ratio
{
int numerator;
int denominator;

double toDouble() const
{
return static_cast<double>(numerator)
/ static_cast<double>(denominator);
}

bool operator < (Ratio const& other) const
{
return toDouble() < other.toDouble();
}
};

void main()
{
std::vector<Ratio> ratios = { {1, 2}, {5, 7}, {2, 11} };
std::sort(ratios.begin(), ratios.end());
}

手动处理原始数组和排序几乎总是更乏味且容易出错的方法。

参见 http://en.cppreference.com/w/cpp/algorithm/sorthttp://en.cppreference.com/w/cpp/container/vector供引用

关于C++ 对两个成对整数数组的 "percentage"进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33717748/

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