求问一个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)”)匹配之前遇到文件结束
求解答 展开
以下是我的代码
#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)”)匹配之前遇到文件结束
求解答 展开
1个回答
展开全部
代码本身没什么问题,主要是你排版缩进没弄好,所以少了一个括号也没发现。
建议你每次编程时,调整好缩进,方便你查看程序
#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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询