【问题标题】:Getting Error - expected primary-expression before ‘]’ token出现错误 - ']' 标记之前的预期主表达式
【发布时间】:2022-01-25 21:28:59
【问题描述】:
#include using namespace std; int hhc(int a[],int n,int k) { int e=0; int v=n-1; while(e<=v) { int g=(e+v)/2; if(a[g]==k) { return(g); } else if(a[g]>k) { e=g+1;
}

else { v=g-1; } return(-1); } } int main() { int n; cin>>n; int a[n]; int i; for(i=0;i<n;i++) { cin>>a[i]; } int k; cin>>k; int d= hhc(a[],n,k); cout<<d<<endl; return(0); }

【问题讨论】:

  • #include 是一个需要文件名的预处理器指令。您使用它的方式表明您对 C++ 没有太多经验。你在上课吗?您可以咨询您的教职员工吗?

标签: c++ binary-search


【解决方案1】:

由于 C++ 编译器在编译时需要数组大小,因此会报错。相反,我们可以使用向量,它本质上是动态的并解决问题。我已经更新了代码,并且可以正常编译。希望这能解决您的问题。

#include <iostream>
#include<vector>
using namespace std; 
int hhc(vector<int> a, int n, int k)
{
    int e = 0;
    int v = n - 1;
    while (e <= v) {
        int g = (e + v) / 2;
        if (a[g] == k) {
            return(g);
        }
        else if (a[g] > k) {
            e = g + 1;
        }

        else {
            v = g - 1;
        }
        return(-1);
    }
}
int main() {
    int n;
    cin >> n;
    //int a[n];
    vector<int> a(n, 0);
    int i;
    for (i = 0; i < n; i++) {
        cin >> a[i];
    }
    int k;
    cin >> k;
    int d = hhc(a, n, k);
    cout << d << endl;
    return(0);
}

【讨论】:

    猜你喜欢
    • 2013-01-13
    • 2017-09-24
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多