c++ - 查找给定数组中的第三大偶数

标签 c++ arrays

我必须在给定数组中找到第三大偶数。我知道分数不能是奇数或偶数,但根据指南,即使分子也是偶数,分数也是偶数。我已经得到了部分工作的代码。

测试用例 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/

相关文章:

c++ - 展开操作期间遇到无效或未对齐的堆栈

c++ 启发式估计函数内联的好处

session 数组中的php Post数组

c++ - 删除队列对象数组

java - 在 Java 数组中设置值返回错误

Java 将 Int 数组转换为 SortedSet

c++ - 在函数中使用 vector 指针时出错

c++ - 系统 ("rm x.*") 与 unlink() 的性能?

c++ - 单线程可以双重锁定互斥量吗?

c++ - 如何对由四个已排序部分组成的大数组进行排序,最好是通过归并排序算法?