中易网

各位高手,求做C++课程设计!一定要C++书写 的

答案:3  悬赏:10  
解决时间 2021-03-25 12:00
各位高手,求做C++课程设计!一定要C++书写 的
最佳答案
#include
template//定义数组类模板
class Array{
private:
T *aptr;//定义数组指针
int size;
public:
int i;
Array(int slots=1)//定义带参数的构造函数,初始化数组
{
size=slots;
aptr=new T[slots];//为数组申请空间
cout<<"输入有序"<for (int i=0;icin>>aptr[i];
}
~Array(); //析构函数
void Print();//输出数组函数
void search(T x);//顺序查找函数
intBinSearch(T number,int Left,int Right);
void halfsearch(T number);
};
template
Array::~Array()
{};
template//输出数组函数,采用for循环输出
void Array::Print()
{
cout<<"数组为:"<for(i=0;icout}
template//顺序查找函数
void Array::search(T x)
{
int i=0;//该元素存在时输出该元素的位置
while((ii++;
if(icout<<"要查找的数所在的位置为:"<else//改元素不存在时输出“不存在这个数!”
cout<<"不存在这个数!"<
}

template
int Array::BinSearch(T number,int Left,int Right)
{

int middle;
while(Left <= Right){
middle = (Left + Right)/2;
if(aptr[middle]{

return BinSearch(number,middle + 1,Right);
}
if(aptr[middle]==number)
{

cout<<"您非递归查找的数据在排序后的数组中的第"< return 1;

}
if(aptr[middle]>number)
{

return BinSearch(number,Left,middle - 1);
}
}
cout<<"您查找的数据不存在!"<return 0;
}

template
void Array::halfsearch( T number)
{

int low=0;
int high=size-1;
int mid;
while(low<=high)
{
mid=(low+high)/2;
if(number>aptr[mid])
{
low=mid+1;
}
else if(number{
high=mid-1;
}
else if(number==aptr[mid])
{
cout<<"您非递归查找的数据在排序后的数组中的第"< return;
}
}
cout<<"您查找的数据不存在!"<}
intmain()
{
Arrayai(8) ; //定义一个整型的数组对象,含8个元素,同时调用构造函数
ai.Print(); //调用类中的输出成员函数
int x;
cout<<"输入要查找的数:"<cin>>x;
ai.search(x); //调用类中的顺序查找成员函数
ai.halfsearch(x);//非递归折半查找
int Left = 0;
int Right = 7;
int num=ai.BinSearch(x,Left,Right);

cout<<"*******************下面是char型*****************"<Arraybi(8);//定义一个字符型的数组对象,含9个元素,同时调用构造函数

bi.Print();//调用类中的输出成员函数
char y;
cout<<"输入要查找的数据:"<cin>>y;
bi.search(y); //调用类中的顺序查找成员函数
bi.halfsearch(y);//非递归折半查找
int charnum=bi.BinSearch(y,Left,Right); //递归折半查找

cout<<"*******************下面是float型*****************"<Arrayci(8);//定义一个字符型的数组对象,含9个元素,同时调用构造函数

ci.Print();//调用类中的输出成员函数
float z;
cout<<"输入要查找的数据:"<cin>>z;
ci.search(z); //调用类中的顺序查找成员函数
ci.halfsearch(z);//非递归折半查找
int floatnum=ci.BinSearch(z,Left,Right); //递归折半查找

return 0;
}
全部回答
#include <iostream.h>
template<class T>//定义数组类模板
class Array{
private:
T *aptr;//定义数组指针
int size;
public:
int i;
Array(int slots)//定义带参数的构造函数,初始化数组
{
size=slots;
aptr=new T[slots];//为数组申请空间
cout<<"输入"<<size<<"个数据:"<<endl;
for (int i=0;i<size;i++)//输入数组的值
cin>>aptr[i];
}
~Array(); //析构函数
void search(T x);//顺序查找函数
voidrehalfsearch(T number,int Left,int Right);
void halfsearch(T number);
};
template<class T>
Array<T>::~Array()
{};
template<class T>//顺序查找函数
void Array<T>::search(T x)
{
int i=0;//该元素存在时输出该元素的位置
while((i<size)&&(aptr[i]!=x))
i++;
if(i<size)
cout<<"要查找的数所在的位置为:"<<i+1<<endl;
else//改元素不存在时输出“不存在这个数!”
cout<<"不存在这个数!"<<endl;
}
template<class T>
voidArray<T>::rehalfsearch(T number,int Left,int Right)
{
int middle;

middle = (Left + Right)/2;
if(aptr[middle]==number)
cout<<"您递归查找的数据"<<aptr[middle]<<"在数组中的第"<<middle+1<<"个数据!"<<endl;
else if(Left==Right)
cout<<"没有发现你要找的数据"<<endl;
else if(aptr[middle]<number)
rehalfsearch(number, middle+1, Right);
else if(aptr[middle]>number)
rehalfsearch( number, Left, middle-1);

}
template<class T>
void Array<T>::halfsearch(T number)
{
int low=0;
int high=size-1;
int mid;
while(low<=high)
{
mid=(low+high)/2;
if(number>aptr[mid])
{
low=mid+1;
}
else if(number<aptr[mid])
{
high=mid-1;

}
else if(number==aptr[mid])
{return mid;}
cout<<"您非递归查找的数据"<<aptr[mid]<<"在数组中的第"<<mid+1<<"个数据!"<<endl;
}
}
intmain()
{
Array<int>ai(9) ; //定义一个整型的数组对象,含8个元素,同时调用构造函数
int x;
cout<<"输入要查找的数:"<<endl;
cin>>x;
ai.search(x); //调用类中的顺序查找成员函数
ai.halfsearch(x); //非递归折半查
ai.rehalfsearch(x,0,8);
return 0;
}
我暂时保留我的看法!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
苹果手机6.13版本有什么好处
贵州省安顺市平坝区马场镇新艺机械厂邮编是多
我想大力宣传城市特色,哪一家城市宣传片制作
在韩国台球店里打工不小在楼梯上摔伤责任哪个
开饭乐狗粮到底怎么样·请专业人士解答··狗
什么地方卖二手杠铃?
世界各国潜艇的噪音各是多少
澳柯玛滚筒洗衣机怎样
完美芦荟矿物晶怎么样?完美奖金制度如何?
北京狗怀孕的孕期有多少时间?孕期的饮食应该
“厉害!”用日语怎么说?
请问人事局和劳动局已合并的地方,是怎么合的
想问一下大家武汉光谷电影院到底有几个啊?那
SM公司每年会在中国招多少个练习生?
我的乳房为什么会痒
推荐资讯
请问在SAP中处理采购运费,我是在PO条件中使
求古文翻译"姜氏欲之,焉辟害?"
怎么查询中汇支付POS机捆绑的银行卡账户
求安徽省安庆市高中一览表?
古风,古韵的诗句!古诗体的也行;我还想要一
脸上长了一个火疖子,消下去了好多但是
还有三天就出月子了,出月子发汗在家发还是去
请问雅马哈KB290电子琴多数少钱
中班数学轻和重听课记录
2005 年产的53度飞天茅台酒条形码是690295288
天津武清楼盘未来升值潜力怎么样啊?有没有投
梦见宝宝被别人抱着还摔破了头
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?