我必须在给定数组中找到第三大偶数。我知道分数不能是奇数或偶数,但根据指南,即使分子也是偶数,分数也是偶数。我已经得到了部分工作的代码。
测试用例 1:
1/2
2/3
2/5
2/7
程序将正确返回 2/7
作为第三大偶数。
测试用例 2:
1/2
2/3
2/5
2/7
2/5
当我期望输出为 2/7
时,程序返回第三大 2/5
。
测试用例 3:
1/2
2/3
2/5
2/5
2/7
2/7
程序仍应返回 2/7
,但它正在返回 2/5
任何人都可以给我提示或指出我的逻辑错误的地方吗?如果值不重复,代码将起作用。这是我的尝试。
int main() {
Fraction largest;
Fraction secondlargest;
Fraction thirdlargest;
Fraction** arr;
int size;
std::cout << "How many fractions? ";
std::cin >> size;
arr = new Fraction*[size] {nullptr};
for (int i = 0; i < size; i++) {
createFraction(&arr[i]);
}
for (int i = 0; i < size; i++) {
if (arr[i]->getNum() % 2 == 0) {
if (largest < *arr[i]) {
thirdlargest = secondlargest;
secondlargest = largest;
largest = *arr[i];
}
else if (secondlargest < *arr[i]) {
thirdlargest = secondlargest;
secondlargest = *arr[i];
}
else if (thirdlargest < *arr[i]) {
thirdlargest = *arr[i];
}
}
}
std::cout << thirdlargest << " is the third largest even fraction.";
for (int i = 0; i < size; i++) {
delete arr[i];
}
delete[] arr;
return 0;
}
最佳答案
只需在第二个和第三个示例中逐步执行您的代码:
2nd example:
1/2 -> doesn't enter the outside if.
2/3 -> set as largest.
2/5 -> set as second largest.
2/7 -> set as third largest.
2/5 -> set as third largest.
与第 3 个示例类似的现象,您不考虑重复项,因此得到不正确的结果。
关于c++ - 查找给定数组中的第三大偶数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34254028/