安徽科技学院 信网学院网络文化节 朱庆文

#include
#include
using namespace std;
class MyArray{
 public:
  MyArray(int leng);
  ~MyArray();
  void Input();//输入n个整数
  void add(int a);//添加一个整数
  void Delete(int i);//删除某位置的整数
  void Display(string);
 protected:
  int *array;
  int length;
};
MyArray::MyArray(int leng){
 if(leng<=0){
  cout<<“长度输入错误”;
  exit(1);
 }
 array = new int[50];
 length = leng;
 if(array == NULL){
  cout<<“错误”;
  exit(1);
 }
 cout<<“MyArray类对象已创建。”<<endl;
}
MyArray::~MyArray(){
 delete[] array;
 cout<<“MyArray类对象被撤销。”<<endl;
}
void MyArray::Display(string str){
 int i;
 int *p = array;
 cout<<str;
 for(i = 0;i < length; i++,p++)
    cout<<*p<<" ";
    cout<<endl;
}
void MyArray::Input(){
 cout<<“请从键盘输入”<<length<<“个整数:”;
 int i;
 int *p = array;
 for(i = 0;i < length; i++,p++)
 cin>> *p;
}
void MyArray::add(int a){
 int *p = array;
 p+=length;
 *p = a;
 length++;
}
void MyArray::Delete(int i){
 while(i>length){
  cout<<“该位置无整数,请重新输入:”;
  cin>>i;
 }
 int *p = array;
 p=p+i;
 for(int j = i;j < length; j++,p++){
  *(p-1) = *p;
 }
 length–;
}
class SortArray :virtual public MyArray {//虚基类,实现数组的排序
    public:
     void Sort();
     SortArray(int leng):MyArray(leng)
  {
  cout << “SortArray类对象已创建。” << endl;
   }
  virtual ~SortArray();
};
SortArray::~SortArray()
{
 cout << “SortArray类对象被撤销。” << endl;
}
void SortArray::Sort()
{   int sum;
 for(int i=0;i<length;i++){
  for(int j=1;j<length-i;j++){
   if(array[j-1]>array[j]){
    sum=array[j];array[j]=array[j-1];array[j-1]=sum;
   }
  }
 }
}
class ReArray :virtual public MyArray {//虚基类,实现数组的倒置
    public:
     void Reverse();
  ReArray(int leng):MyArray(leng)
  {
  cout << “ReArray类对象已创建。” << endl;
  }
  virtual~ReArray();
};
void ReArray::Reverse(){
    for(int i=0;i<length/2;i++){ 
     int sum = array[i]; array[i] = array[length-1-i]; array[length-1-i] = sum;
 }
}
ReArray::~ReArray(){
 cout << “ReArray类对象被撤销。” << endl;
}
class AverArray :virtual public MyArray {//虚基类,求数组平均值
    public:
     AverArray(int leng):MyArray(leng){
      cout << “AverArray类对象已创建。” << endl;
 }
 ~AverArray(){
  cout << “AverArray类对象已撤销。” << endl;
 }
 double Aver(){
 double sum=0;
 for(int i=0;i<length;i++){
  sum+=array[i];
 }
 double aver=sum/length;
 return aver;}
};
class NewArray:public SortArray,public ReArray,public AverArray{//派生类,实现数组的排序,倒置,求平均值
 public:
 NewArray(int len):MyArray(len),SortArray(len),ReArray(len),AverArray(len){
  cout << “NewArray类对象已创建。” << endl;
 }
 ~NewArray(){
   cout << “NewArray类对象已撤销。” << endl;
 }
};
int main()
{
 NewArray a(5);
 cout<<endl;
 a.Input();
 a.Display(“显示已输入的五个整数:”);
 int numb;
 int d;
 cout<<“1.排序       2.倒置       3.求平均值       4.删除某位置上的元素       5.添加元素       6.结束”<<endl;
 while(cin>>numb&&numb!=6){
  switch(numb){
  case 1:
   a.Sort();
         a.Display(“显示排序以后的”);
         break;
  case 2:
   a.Reverse();
         a.Display(“显示倒置以后的”);
      break;
  case 3:
      cout<<“平均值为”<<a.Aver()<<endl;
   break;
  case 4:
   cout<<“输入要删除元素的位置:”;
   cin>>d;
      a.Delete(d);
         a.Display(“删除后的”);
         break;
  case 5:
   cout<<“输入要添加的整数:”;
   cin>>d;
   a.add(d);
         a.Display(“添加后的”);
         break;
  default:
      cout<<“请输入有效数字”<<endl; 
  }
 }
 return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值