1.实训题目
设计一个最多可以存放100个整数的类,要求这些整数按照从小到大的顺序存放在类中的数组里,可以删除数组中的数据,也可以向数组中插入数据,但是要保持从小到大的顺序,可以求出数据的多少,可以判断数组的空和满,可以显示数组中的整数。当然刚生成对象时,对象中的数组没有数据,只有一个一个地向对象中插人数据。
设计主程序先生成一个对象,然后插人100个随机数,最后显示结果。考查若生成
101或110个数,结果会怎样?
再设计主程序先生成一个对象,然后插人数据34,48,25,45,74,26,68,37,48,95,
21,35,19,73,58),接着删除(48,37,35),再插人46,18,最后显示对象中的所有数据。
2.实训要求
(1)分析数组类的数据属性要求。
(2)分析数组类的操作属性要求。
(3)编制数组类的接口定义。
(4)生成数组类对象。
(5)编制程序实现数组对象的插入和删除操作。
---------------------------------------------------------------------
源码如下:
#include<iostream>
#include<cstdlib>
#include <ctime>
using namespace std;
class Array{
private:
int array[100];
int a;
public:
Array(){a=0;};
int Sum();//统计集合中数据个数
void Display(); //显示数据
void Add(int);//添加数据
void Delete(int);//删除数据
void Empty();//判断是否为空
void Full();//判断是否为满
~Array(){cout << "执行析构函数"<<endl;};
};
int Array::Sum()//统计集合中数据个数
{
return a;
}
void Array::Display()//显示数据
{
//选择排序,从小到大
int k,j,t;
for(k=0;k<=a-2;k++)
{
int kmin=k;
for(j=k+1;j<=a-1;j++)
{
if(array[j]<array[kmin])
{
kmin=j;
}
}
t=array[kmin];
array[kmin]=array[k];
array[k]=t;
}
cout<<"数组中数据的个数有 "<<Sum()<<" 个,分别为:"<<endl;
int i;
for(i=0; i<=a-1; i++)
{
if(i%5==0)//每行显示5个数据
cout<<endl;
cout<<'\t'<<array[i];
}
cout<<endl;
}
void Array::Add(int m)//添加数据(一次只添加一个)
{
array[a++]=m;
}
void Array::Delete(int m)//删除数据(一次只删除一个)
{
int i;
for(i=0;i<=a-1;i++)//从集合中找到该数据m,并删除
{
if(array[i]==m)
{
array[i]=array[a-1];
a--;
}
}
}
void Array::Empty()//判断是否为空
{
if(a==0)
{
cout<<"数组为空"<< endl;
}
}
void Array::Full()//判断是否为满
{
if(a==100)
{
cout<< "数组已满"<< endl;
}
}
/*
int main()//产生100个随机数
{
Array a1;
srand((int)time(NULL));
for(int i=0;i<100;i++)
{
a1.Add(rand()%1000); //显示的范围:[0,1000)
}
cout<<"产生100个随机数如下:"<<endl;
a1.Display();//显示a1
}
*/
int main()
{
Array A;//定义一个数组A
int i,j,k,x[100],m;
cout<<"请输入数组中的数据个数:";
cin>>m;
cout<<"请向数组中输入"<<m<<"个数据:"<<endl;
for(i=0;i<m;i++)
{
cin>>x[i];
A.Add(x[i]);
}
A.Display();
cout<<endl;
//添加数据
int t1,n1;
cout<<"请输入要添加的数据个数:";
cin>>n1;
cout<<"请输入要添加的 "<<n1<<" 个数据:"<<endl;
for(t1=1;t1<=n1;t1++)
{
cin>>j;
A.Add(j);
}
cout<<"数组现在包含的数据:"<<endl;
A.Display();
cout<<endl;
//删除数据
int t2,n2;
cout<<"请输入要删除的数据个数:";
cin>>n2;
cout<<"请输入要删除的 "<<n2<<" 个数据:"<<endl;
for(t2=1;t2<=n2;t2++)
{
cin>>k;
A.Delete(k);
}
cout<<"数组现在包含的数据:"<<endl;
A.Display();
cout<<endl;
}