我被编程类(class)的练习困住了。我实际上不想要代码,我想要更多提示。
我有一个分数数组,我需要找到数组中最大的分数。此外,我有一个函数decimal(),它将分数转换为小数。我的想法是这样的:
struct fraction &greatestFraction(struct fraction fractionArray[], int arrayLength){
double greatestValue = 0.0;
for (int i = 0; i < arrayLength; i++) {
if (decimal(fractionArray[i]) > greastestValue) {
greatestValue = i;
}
}
return fractionArray[];
}
将分数转换为小数,但我必须返回一个结构。我不知所措。
最佳答案
你应该选择第一个元素作为最大值,因为如果数组中所有元素都是负数,你的灵魂就是错误的。
struct fraction &greatestFraction(struct fraction fractionArray[], int arrayLength){
double greatestValue = fractionArray[0].numer / (double) fractionArray[0].denumer;
size_t maxIndex = 0;
for (size_t i = 1; i < arrayLength; ++i) {
double tmpVal = fractionArray[i].numer / (double) fractionArray[i].denumer;
if (tmpVal > greatestValue) {
maxIndex = i;
}
}
return fractionArray[maxIndex];
}
如果你需要更准确的比较,你可以这样做:
bool greater(struct fraction& a, struct fraction& b) {
return a.numer * b.denumer > a.denumer * b.numer;
}
struct fraction &greatestFraction(struct fraction fractionArray[], int arrayLength){
double greatestValue = fractionArray[0];
size_t maxIndex = 0;
for (size_t i = 1; i < arrayLength; ++i) {
if (greater(fractionArray[i], greatestValue)) {
maxIndex = i;
}
}
return fractionArray[maxIndex];
}
关于c++ - 查找数组中最大的分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36884208/