实训5 数组数据处理对象实训

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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值