求问一个C++问题 关于折半查找法

在数组中输入15个数,然后随机输入一个数在数组中进行折半查找。以下是我的代码#include<iostream>usingnamespacestd;constintn=1... 在数组中输入15个数,然后随机输入一个数在数组中进行折半查找。
以下是我的代码
#include <iostream>
using namespace std;
const int n=15;
intmain()
{int Array[n]; int i; int scr;
void Renew(int A[]);
void zhe_ban(int A[],int);
cout<<"Please enterdata: "<<endl;
for(i=0;i<15;i++) //输入数据
cin>>scr; Array[i]=scr;
Renew(Array); //调用排序
for(i=0;i<n;i++) //输出排序结果
{cout<<"New Array is: "<<Array[i];}
cout<<endl;
int x; //调用折半法查找
cout<<"Please enterthe number you want to find: "<<endl;
cin>>x;
zhe_ban(Array,x);
return 0;}

void Renew(int A[])
{int i,j,temp;
for(i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (A[i]<A[j])
{temp=A[i]; A[i]=A[j]; A[j]=temp;}

void zhe_ban(int A[],intx)
{ int left=0,right=n-1;
while(left!=right)
{ if (A[(right+left)/2]>x) right=(right+left)/2;
else if(A[(right+left)/2]<x) left=(right+left)/2;
else {cout<<"该数是数组中的第"<<(right+left)/2+1<<"个元素的值"<<endl;return;}
}
cout<<"没有你查找的数"<<endl;}

我用的VS2008编译,为何每次都出现这种问题??
错误 1 error C2601: “zhe_ban”: 本地函数定义是非法的
错误 2 fatal error C1075: 与左侧的 大括号“{”(位于“d:\用户目录\documents\visual studio 2008\projects\yld\yld\y1.cpp(22)”)匹配之前遇到文件结束

求解答
展开
 我来答
Adol1111
2013-07-23 · TA获得超过948个赞
知道小有建树答主
回答量:218
采纳率:0%
帮助的人:325万
展开全部

代码本身没什么问题,主要是你排版缩进没弄好,所以少了一个括号也没发现。

建议你每次编程时,调整好缩进,方便你查看程序

#include <iostream>
using namespace std;
const int n=15;
int main()
{
int Array[n];
int i;
int scr;
void Renew(int A[]);
void zhe_ban(int A[],int);
cout<<"Please enter data: "<<endl;
for(i=0;i<15;i++)        //输入数据
{
cin>>scr;      
Array[i]=scr;
}
Renew(Array);       //调用排序
cout<<"New Array is: "<<endl;
for(i=0;i<n;i++)               //输出排序结果
cout<<Array[i]<<"\t";
cout<<endl;
int x;         //调用折半法查找
cout<<"Please enterthe number you want to find: "<<endl;
cin>>x;
zhe_ban(Array,x);
system("pause");
return 0;
}

void Renew(int A[])     
{int i,j,temp;
for(i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (A[i]<A[j])
{
temp=A[i];
A[i]=A[j];    
A[j]=temp;
}
}//少}

void zhe_ban(int A[],int x)

int left=0,right=n-1;
while(left!=right)

if (A[(right+left)/2]>x)    
right=(right+left)/2;
else if(A[(right+left)/2]<x)     
left=(right+left)/2;
else {
cout<<"该数是数组中的第"<<(right+left)/2+1<<"个元素的值"<<endl;
return;
}
}
cout<<"没有你查找的数"<<endl;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式