题目描述
设计并实现一个动态整型数组类Vect,要求:
(1)实现构造函数重载,可以根据指定的元素个数动态创建初始值为0的整型数组,或根据指定的内置整型数组动态创建整型数组。
(2)设计拷贝构造函数和析构函数,注意使用深拷贝。
(3)设计存取指定位置的数组元素的公有成员函数,并进行下标越界,若越界则输出“out of boundary”。
(4)设计获取数组元素个数的公有成员函数。
(5)设计用于输出数组元素的公有成员函数,元素之间以空格分隔,最后以换行符结束。
在main函数中按以下顺序操作:
(1)根据内置的静态整型数组{1,2,3,4,5}构造数组对象v1,根据输入的整型数构造数组对象v2。
(2)调用Vect的成员函数依次输出v1和v2的所有元素。
(3)输入指定的下标及对应的整型数,设置数组对象v1的指定元素。
(4)根据数组对象v1拷贝构造数组对象v3。
(5)调用Vect的成员函数依次输出v1和v3的所有元素。
输入
用于构建数组对象v2的元素个数
用于设置数组对象v1的指定下标及元素值
输出
数组对象v1和v2的所有元素
数组对象v1和v3的所有元素
样例输入
10
6 6
样例输出
1 2 3 4 5
0 0 0 0 0 0 0 0 0 0
out of boundary
1 2 3 4 5
1 2 3 4 5
答案:
#include<iostream>
using namespace std;
class Vect
{
private:
int size;
int* integer;
public:
Vect()
{
int i;
integer = new int[5];
for(i = 0;i < 5;i++)
{
integer[i] = i + 1;
}
size = 5;
}
Vect(int s)
{
int i;
integer = new int[s];
for(i = 0;i < s;i++)
{
integer[i] = 0;
}
size = s;
}
Vect(Vect & copy)
{
int i;
size = copy.size;
integer = new int[size];
for(i = 0;i < size;i++)
{
integer[i] = copy.integer[i];
}
}
int get(int pos)
{
return integer[pos];
}
void set(int pos,int setnum)
{
if(pos < 0 || pos >= size)
{
cout << "out of boundary" << endl;
}
else
{
integer[pos] = setnum;
}
}
void display()
{
int i;
for(i = 0;i < size;i++)
{
if(i == size - 1)
{
cout << integer[i];
}
else
{
cout << integer[i] << " ";
}
}
cout << endl;
}
~Vect()
{
delete [] integer;
integer = NULL;
}
};
int main()
{
Vect v1;
int zero_size,pos,value;
cin >> zero_size;
cin >> pos >> value;
v1.display();
Vect v2(zero_size);
v2.display();
v1.set(pos,value);
Vect v3(v1);
v1.display();
v3.display();
return 0;
}