arrays - 从数组中查找最接近数字的函数始终返回数组的第一个元素
问题描述
在我的程序中。我需要编写一个函数并输入一个目标数字。该函数必须遍历元素数组并找到最接近目标数字的数字。我设法在这里找到了示例函数: https ://www.tutorialspoint.com/find-closest-number-in-array-in-cplusplus
我所做的只是将数组更改为
int arr[] = { 2970, 2950, 2930, 2910, 2880, 2860, 2840 };
完整代码:
static int getNearest(int x, int y, int target) {
if (target - x >= y - target)
return y;
else
return x;
}
static int getNearestElement(int arr[], int n, int target) {
if (target <= arr[0]){
return arr[0];
}
if (target >= arr[n - 1]){
return arr[n - 1];
}
int left = 0, right = n, mid = 0;
while (left < right) {
mid = (left + right) / 2;
if (arr[mid] == target){
return arr[mid];
}
if (target < arr[mid]) {
if (mid > 0 && target > arr[mid - 1]){
return getNearest(arr[mid - 1], arr[mid], target);
}
right = mid;
}
else {
if (mid < n - 1 && target < arr[mid + 1]){
return getNearest(arr[mid], arr[mid + 1], target);
}
left = mid + 1;
}
}
return arr[mid];
}
int get_temperature(int target){
int arr[] = { 2970, 2950, 2930, 2910, 2880, 2860, 2840 };
int n = sizeof(arr) / sizeof(arr[0]);
return (getNearestElement(arr, n, target));
}
在我的 main.c 中,我调用:
int closest_temperature = get_temperature(2900);
printf("closest temperature = %i\n",closest_temperature);
输出是:
closest temperature = 2970
即使最接近的数字是 2910,它似乎总是返回我的数组的第一个元素。有人可以帮我发现错误吗?
解决方案
推荐阅读
- post - 邮递员如何生成 Cookie 以及我将如何在我的代码中复制它
- javascript - 如何将jsp变量分配给现有jsp页面的javascript变量
- arrays - 从 ReactJS 中的数组中删除复杂组件
- mongodb - mongoose的Model.updateOne返回值是什么意思?
- python - 有没有办法将函数调用传递给内部对象?
- python - 如何在 Python 中同一类对象的 2 个实例中触发方法?
- javascript - Await 不使用 firebase 批处理功能等待
- flutter - Flutter:当 InkWell() 的子元素是容器时如何修复 Tap 效果
- javascript - 创建钩子时出错:“ReferenceError:未定义回声”
- python - 将 HuggingFace Trainer 与 Ray Tune 一起使用时“无法腌制 _thread.RLock 对象”