各位高手,求做C++课程设计!一定要C++书写 的
答案:3 悬赏:10
解决时间 2021-03-25 12:00
- 提问者网友:美人性情
- 2021-03-25 03:07
各位高手,求做C++课程设计!一定要C++书写 的
最佳答案
- 二级知识专家网友:封刀令
- 2021-03-25 04:28
#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;i cin>>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;i cout }
template//顺序查找函数
void Array::search(T x)
{
int i=0;//该元素存在时输出该元素的位置
while((i i++;
if(i cout<<"要查找的数所在的位置为:"<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;
}
template
class Array{
private:
T *aptr;//定义数组指针
int size;
public:
int i;
Array(int slots=1)//定义带参数的构造函数,初始化数组
{
size=slots;
aptr=new T[slots];//为数组申请空间
cout<<"输入有序"<
}
~Array(); //析构函数
void Print();//输出数组函数
void search(T x);//顺序查找函数
intBinSearch(T number,int Left,int Right);
void halfsearch(T number);
};
template
Array
{};
template
void Array
{
cout<<"数组为:"<
template
void Array
{
int i=0;//该元素存在时输出该元素的位置
while((i
if(i
cout<<"不存在这个数!"<
}
template
int Array
{
int middle;
while(Left <= Right){
middle = (Left + Right)/2;
if(aptr[middle]
return BinSearch(number,middle + 1,Right);
}
if(aptr[middle]==number)
{
cout<<"您非递归查找的数据在排序后的数组中的第"<
}
if(aptr[middle]>number)
{
return BinSearch(number,Left,middle - 1);
}
}
cout<<"您查找的数据不存在!"<
}
template
void Array
{
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<<"您非递归查找的数据在排序后的数组中的第"<
}
}
cout<<"您查找的数据不存在!"<
intmain()
{
Array
ai.Print(); //调用类中的输出成员函数
int x;
cout<<"输入要查找的数:"<
ai.search(x); //调用类中的顺序查找成员函数
ai.halfsearch(x);//非递归折半查找
int Left = 0;
int Right = 7;
int num=ai.BinSearch(x,Left,Right);
cout<<"*******************下面是char型*****************"<
bi.Print();//调用类中的输出成员函数
char y;
cout<<"输入要查找的数据:"<
bi.search(y); //调用类中的顺序查找成员函数
bi.halfsearch(y);//非递归折半查找
int charnum=bi.BinSearch(y,Left,Right); //递归折半查找
cout<<"*******************下面是float型*****************"<
ci.Print();//调用类中的输出成员函数
float z;
cout<<"输入要查找的数据:"<
ci.search(z); //调用类中的顺序查找成员函数
ci.halfsearch(z);//非递归折半查找
int floatnum=ci.BinSearch(z,Left,Right); //递归折半查找
return 0;
}
全部回答
- 1楼网友:青尢
- 2021-03-25 06:19
#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;
}
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;
}
- 2楼网友:未来江山和你
- 2021-03-25 04:52
我暂时保留我的看法!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯