ghommyl 2022-07-08 10:59 采纳率: 100%
浏览 37
已结题

报错(写二分查找的代码)

有谁知道为什么报错吗
代码:

#include <iostream>
using namespace std;

int len(double arr[])
{
    return sizeof(arr) / sizeof(double);
}

int bin_search(double arr[], double val)
{
    int low = 0;
    int high = len(arr) - 1;
    int mid = (low + high) / 2;
    while (low <= high)
        double guess = arr[mid];
        if (val < guess)
            high = mid;
        else if (val > guess)
            low = mid;
        else
            cout << "Found the value" << endl;
            return 0;
        mid = (low + high) / 2;
    cout << "The value is not found" << endl;
    return -1;
}

int main()
{
    double arr[] = { 1, 2, 3, 4, 5 };
    bin_search(arr, 3);
    bin_search(arr, 7);
    return 0;
}

报错:

> Executing task: C/C++: g++.exe 生成活动文件 <

正在启动生成...
C:\msys64\mingw64\bin\g++.exe -fdiagnostics-color=always -g C:\Users\Ying\Desktop\C++\其他\算法\二分查找.cpp -o C:\Users\Ying\Desktop\C++\其他\算法\二分查找.exe
C:\Users\Ying\Desktop\C++\����\�㷨\���ֲ���.cpp: In function 'int len(double*)':
C:\Users\Ying\Desktop\C++\����\�㷨\���ֲ���.cpp:6:23: warning: 'sizeof' on array function parameter 'arr' will return size of 'double*' [-Wsizeof-array-argument]
    6 |         return sizeof(arr) / sizeof(double);
      |                      ~^~~~
C:\Users\Ying\Desktop\C++\����\�㷨\���ֲ���.cpp:4:16: note: declared here
    4 | int len(double arr[])
      |         ~~~~~~~^~~~~
C:\Users\Ying\Desktop\C++\����\�㷨\���ֲ���.cpp: In function 'int bin_search(double*, double)':
C:\Users\Ying\Desktop\C++\����\�㷨\���ֲ���.cpp:16:27: error: 'guess' was not declared in this scope
   16 |                 if (val < guess)
      |                           ^~~~~

生成已完成,但出现错误。
终端进程已终止,退出代码: -1。

终端将被任务重用,按任意键关闭。
  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-07-08 11:05
    关注

    int len(double arr[])
    {
    return sizeof(arr) / sizeof(double);
    }
    这么计算数组大小是错误的,当数组作为函数参数时,实际是作为指针传递的,sizeof(arr)得到的是指针的大小,不是数组的大小。
    所以bin_search函数还需要一个参数,表示数组的大小

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月16日
  • 已采纳回答 7月8日
  • 创建了问题 7月8日

悬赏问题

  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line