用C++代码写出 三数论大小(指针)
时间: 2024-09-18 14:17:51 浏览: 41
C++写的源代码 法雷序列求解
4星 · 用户满意度95%
在C++中,你可以使用指针来实现三数之论(也称三数比较),即在一个数组或连续的整数序列中找到最小、中间和最大的三个数。下面是一个简单的例子,假设我们已经有了三个指针`min`, `mid`, 和 `max`,它们分别指向数组中的三个元素:
```cpp
#include <iostream>
// 定义指针类型的结构体
struct Number {
int value;
int* ptr;
};
void findThreeNumbers(Number arr[], int size) {
// 初始化指针:最小值、中间值、最大值
Number min = {arr[0].value, &arr[0]};
Number mid = {arr[size / 2].value, &arr[size / 2]};
Number max = {arr[size - 1].value, &arr[size - 1]};
// 找到实际的最小值
for (int i = 1; i < size; ++i) {
if (arr[i].value < min.value) {
min = arr[i];
}
}
// 找到中间值
for (int i = 0; i < size / 2; ++i) {
if (arr[i].value > mid.value && arr[i].value <= min.value) {
mid = arr[i];
}
}
// 找到最大值
for (int i = size - 2; i >= 0; --i) {
if (arr[i].value > max.value && arr[i].value <= mid.value) {
max = arr[i];
}
}
std::cout << "最小值: " << min.value << ", 中间值: " << mid.value << ", 最大值: " << max.value << '\n';
}
int main() {
// 创建一个包含五个整数的数组示例
Number numbers[] = {5, 2, 9, 1, 7};
int size = sizeof(numbers) / sizeof(numbers[0]);
findThreeNumbers(numbers, size);
return 0;
}
```
上述代码中,`findThreeNumbers` 函数遍历整个数组,不断更新`min`, `mid`, 和 `max` 结构体中的值,直到找到正确的最小、中间和最大值。
阅读全文